#include<stdio.h>
typedef int Status;
typedef int sElemType;
//链栈
typedef struct StackNode{
sElemType data;
struct StackNode *next;
}StackNode,*LinkStack;
StackNode *p;
//初始化
Status InitStack(LinkStack &S){
S=NULL;
return 1;
}
//判空
Status EmptyStack(LinkStack S) {
if(S==NULL) return 1;
return 0;
}
//入栈
Status Push(LinkStack &S,sElemType e) {
p=new StackNode;
p->data=e;
p->next=S;
S=p;
return 1;
}
//出栈
Status Pop(LinkStack &S,sElemType &e){
if(S==NULL) return 0;
e=S->data;
p=S;
S=S->next;
delete p;
return 1;
}
//取栈顶元素
sElemType GetTop(LinkStack S) {
if(S!=NULL){
return S->data;
}
}
main(){
//初始化
LinkStack S;
int n=InitStack(S) ;
if(n==1) printf("链栈初始化成功\n");
//判空
n=EmptyStack(S) ;
if(n==1){
printf("栈为空\n");
}
//入栈
n=Push(S,1) ;
if(n==1){
printf("入栈成功\n");
}
//出栈
int e;
// n=Pop(S,e) ;
// if(n==1){
// printf("出栈的元素为%d\n",e);
// }
//取栈顶元素
e=GetTop(S) ;
printf("栈顶元素为:%d\n",e);
}
07-24
565
07-24
373