#include
#include
#define elemtype int
typedef struct LsNode{
elemtype *elem;//给栈以动态形式分配内存,elem=(elemtype *)malloc(sizeof(elemtype)*length);
int length; //栈的空间大小,可以由用户来决定它的大小
int top;
} STACK;
//顺序存储的栈结构,以及其相应算法
void InitStack(STACK *S, int len)
{//初始化空栈
S->length=len;
S->elem = (elemtype *)malloc(sizeof(elemtype)*len);
S->top = -1;
}
int EmptyStack(STACK *S)
{//判断是否栈空,为空则返回1,否则返回0
if(S->top==-1){
return 1;
}
else{
return 0;
}
}
int push(STACK *S, elemtype x)
{//元素x进栈操作,成功返回1,否则返回0
if(S->top
S->top++;
S->elem[S->top]=x;
return 1;
}
else{
return 0;
}
}
elemtype pop(STACK *S)
{//出栈操作,返回出栈元素
elemtype x;
if(EmptyStack(S)){
printf("栈为空");
return 0;
}
else{
x=S->elem[S->top];
S->top--;
return x;
}
}
void Print(STACK *S)
{//依次输出栈顶到栈底的所有元素
int i;
for(i=S->top;i>=0;i--){
printf("%4d",S->elem[i]);
}
printf("\n");
}
int main(void)
{
STACK *s=(STACK*)malloc(sizeof(STACK));
InitStack(s,100);
push(s,1);
push(s,2);
push(s,4);
Print(s);
push(s,5);
Print(s);
pop(s);
Print(s);
}
高难度问题啊!!!