#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
/**定义一个链栈*/
typedef struct LNode{
int data;
struct LNode *next;
}LNode;
/**初始化*/
void initStack(LNode *&lst){ //此处需要注意 定义一个LNode * 类型的 lst ,同时因为需要改变lst 所以用了&
lst=(LNode*)malloc(sizeof(LNode));
lst->next=NULL;
printf("链栈初始化成功!\n");
}
/**判断栈是否为空*/
int isEmpty(LNode *lst){
if(lst->next==NULL){
printf("链表为空");
return 1;
}else{
return 0;
}
}
/**入栈*/
void push(LNode *lst,int x){
LNode *p;
//创建头结点
p=(LNode*)malloc(sizeof(LNode));
p->next=NULL;
/**入栈操作*/
p->data=x;
p->next=lst->next;
lst->next=p;
//输出
printf("%d 入栈成功\n",x);
}
/**出栈操作*/
void pop(LNode *lst,int &x){
LNode *p;
if(lst->next==NULL){
printf("栈空,请勿出栈!\n");
}
else{
p=lst->next;
x=p->data;
lst->next=p->next;
free(p);
printf("%d 出栈成功\n",x);
}
}
/**打印栈*/
void printfStack(LNode *lst){
LNode *p;
p=lst->next;
while(p!=NULL){
printf("%d ",p->data);
p=p->next;
}
}
int main(){
LNode * linkStack;
initStack(linkStack);
push(linkStack,5);
push(linkStack,6);
push(linkStack,9);
push(linkStack,90);
int x=0;
pop(linkStack,x);
printfStack(linkStack);
//printf("%d",linkStack->next->data);
}