#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
//链栈
typedef int dataType;
typedef struct node{
dataType data;
struct node *next;
}LinkStack;
//创建链栈
LinkStack* createStack(){
LinkStack *t=(LinkStack *)malloc(sizeof(LinkStack));
t->next=NULL;
return t;
}
//判断栈是否为空
int empty(LinkStack *s){
return s->next==NULL;
}
//元素x进栈
void push(LinkStack *s,dataType x){
node *t=(node *)malloc(sizeof(node));
t->data=x;
t->next=s->next;
s->next=t;
}
//出栈
void pop(LinkStack *s){
if(empty(s)) exit(1);
node *p=s->next;
s->next=p->next;
free(p);
}
//取栈顶元素的值
dataType top(LinkStack *s){
return s->next->data;
}
//求栈的元素个数
int size(LinkStack *s){
node *p=s->next;
int k=0;
while(p){
k++;
p=p->next;
}
return k;
}
int main(){
LinkStack *s=createStack();
push(s,80);
push(s,90);
pop(s);
push(s,70);
printf("栈有%d个元素,栈顶元素为:%d\n",size(s),top(s));
}