链栈的基本操作(C语言实现)
#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0
typedef int SElemtype;
typedef int Status;
typedef struct StackNode{
SElemtype data;
struct StackNode *next;
}StackNode,*LinkStack;
Status InitStack(LinkStack &S){
S=NULL;
printf("初始化成功\n");
return OK;
}
Status EmptyStack(LinkStack S){
if(S==NULL){
printf("链栈为空\n");
return OK;}
else{
printf("链栈不为空\n");
return ERROR;}
}
Status Push(LinkStack &S,SElemtype e){
StackNode *p;
p=(LinkStack)malloc(sizeof(StackNode));
p->data=e;
p->next=S;
S=p;
printf("入栈成功\n");
return OK;
}
Status Pop(LinkStack &S,SElemtype &e){
if(S==NULL)
return ERROR;
StackNode *p;
p=(LinkStack)malloc(sizeof(StackNode));
e=S->data;
p=S;
S=S->next;
free(p);
printf("出栈成功\n");
return OK;
}
Status GetTop(LinkStack S){
if(S!=NULL)
return S->data;
}
int main()
{
LinkStack S;
InitStack(S);
EmptyStack(S);
SElemtype e;
Push(S,e);
Pop(S,e);
printf("栈顶元素为%d\n",GetTop(S));
}