/*
思路:
需要一个头指向栈顶
*/
#include <stdio.h>
#include <stdlib.h>
typedef char DataType;
typedef struct stacknode
{
DataType data;
struct stacknode * next;
}StackNode,*LinkStack;
// 判断栈空
int StackEmpty(LinkStack top)
{
return top==NULL;
}
// 进栈
LinkStack Push(LinkStack top,DataType x)
{
StackNode * p;
p=(StackNode *)malloc(sizeof(StackNode));
p->data=x;
p->next=top;
top=p;
return top;
}
// 出栈
LinkStack Pop(LinkStack top,DataType * x)
{
if(StackEmpty(top))
{
printf("该栈是空\n");
exit(0);
}else
{
StackNode *p=top;
* x=p->data;
top=p->next;
free(p);
return top;
}
}
// 获取栈顶
DataType GetTop(LinkStack top)
{
if(StackEmpty(top))
{
printf("该栈是空\n");
exit(0);
}
else
{
return top->data;
}
}
int main(void)
{
LinkStack top,mao;
mao=Push(top,'c');
mao=Push(mao,'b');
DataType x;
mao=Pop(mao,&x);
printf("%c\n",GetTop(mao));
return 0;
}
C-链栈
最新推荐文章于 2023-05-19 20:23:19 发布