#include"stdio.h"
#include"stdlib.h"
#include"malloc.h"
#define maxsize 10
#define ERROR 0
#define OK 1
#define No 0
#define YES 1
typedef int Datatype
typedef struct
{
DataType stack[MaxStackSize];
int top;
} SeqStack;
void StackInitiate(SeqStack *S);
int StackNotEmpty(SeqStack s);
int StackPush(SeqStack *S,Datatype x);
int StackPop(SeqStack *S,DataType *d);
int StackTop(SeqStack S,DataType *d);
void StackInitiate(SeqStack *S)
{
S->top=0;
}
int StackNotEmpty(SeqStack s)
{
if(S.top<=0) return 0;
else return 1;
}
int StackPush(SeqStack *S,Datatype x)
{
if(S->top>=MaxStackSize) printf("堆栈已满无法插入!\n");return 0;
else S->stack[S->top]=x;S->top++;return 1;
}
int StackPop(SeqStack *S,DataType *d)
{
if(S->top<=0) printf("堆栈以空无数据元素出栈");return 0;
else S->top--;*d=S->stack[S->top];return 1;
}
int StackTop(SeqStack S,DataType *d)
{
if(S.top<=0) printf("堆栈以空!\n");return 0;
else S->top--;*d=S->stack[S->top];
}
void main()
{
SeqStack myStack;
int i,x;
Stackinitiate(&myStack);
for(i=0;i<10;i++) StackPush(&myStack,i+1);
StackTop(myStack,&x);
printf("当前栈顶数据元素为:%d\n",x);
printf("依次出栈的数据元素序列如下:\n");
while(StackNotEmpty(myStack))
{
StackPop(&myStack,&x);
printf("%d ",x);
}
}
#include"stdlib.h"
#include"malloc.h"
#define maxsize 10
#define ERROR 0
#define OK 1
#define No 0
#define YES 1
typedef int Datatype
typedef struct
{
DataType stack[MaxStackSize];
int top;
} SeqStack;
void StackInitiate(SeqStack *S);
int StackNotEmpty(SeqStack s);
int StackPush(SeqStack *S,Datatype x);
int StackPop(SeqStack *S,DataType *d);
int StackTop(SeqStack S,DataType *d);
void StackInitiate(SeqStack *S)
{
S->top=0;
}
int StackNotEmpty(SeqStack s)
{
if(S.top<=0) return 0;
else return 1;
}
int StackPush(SeqStack *S,Datatype x)
{
if(S->top>=MaxStackSize) printf("堆栈已满无法插入!\n");return 0;
else S->stack[S->top]=x;S->top++;return 1;
}
int StackPop(SeqStack *S,DataType *d)
{
if(S->top<=0) printf("堆栈以空无数据元素出栈");return 0;
else S->top--;*d=S->stack[S->top];return 1;
}
int StackTop(SeqStack S,DataType *d)
{
if(S.top<=0) printf("堆栈以空!\n");return 0;
else S->top--;*d=S->stack[S->top];
}
void main()
{
SeqStack myStack;
int i,x;
Stackinitiate(&myStack);
for(i=0;i<10;i++) StackPush(&myStack,i+1);
StackTop(myStack,&x);
printf("当前栈顶数据元素为:%d\n",x);
printf("依次出栈的数据元素序列如下:\n");
while(StackNotEmpty(myStack))
{
StackPop(&myStack,&x);
printf("%d ",x);
}
}