此处使用单链表头插法实现栈的创建、入栈、出栈。
#include "stdio.h"
#include "stdlib.h"
#define elemtype int
typedef struct node{
elemtype data;
struct node *last;
}node;//创建结构体;
node *create(void)
{
node *p=(node*)malloc(sizeof(node));
p->last=NULL;
return p;
}//新建头节点;
node *increase(node *stack_top,elemtype data)
{
node *p=(node*)malloc(sizeof(node));
p->last=stack_top;
p->data=data;
return p;
}//新建节点;
elemtype out(node *stack_top)
{
return stack_top->data ;
}//出栈;
node *delet(node *stack_top)
{
node *p=stack_top->last ;
free(stack_top);
return p;
}//与out联合使用,以更新栈顶;
int main(void)
{
node *head=create();//新建头节点;
node *stack_top;//指向栈顶;
stack_top=increase(head,1);
stack_top=increase(head,2); //测试输入;
printf("%d\n",out(stack_top));//出栈测试;
stack_top=delet(stack_top);//更新栈顶;
return 0;
}