链表堆栈
关于链堆栈,是先进后出的一种数据,首先定义一个空的指针链表struct node,再初始化链表stack creat(),申请一个链表空间,然后再由指针向里面存储数据stack push_stackt(stack S,int x),注意第一个链表的next为NULL,
(s=s->next; //循坏往下面跳,使指针指向下一个 ),需要特别注意
链表进栈流程图
堆栈整个过程
#include "stdio.h"
#include "malloc.h"
typedef struct node * ptrnode;
typedef int elemtype;
struct node
{
elemtype data;//int
ptrnode next;//指针
};
typedef ptrnode stack;
stack creat()//初始化
{
stack S;
S=(stack)malloc(sizeof(struct node));
S->next=NULL;
return S;
}
stack push_stackt(stack S,int x)
{
ptrnode site;
site=(ptrnode)malloc(sizeof(stack));
site->data=x;
site->next=S->next;
S->next=site;
return S;
}
int main()
{
stack s,r;
int x;
s=creat();
scanf("%d",&x);
while(x!=0)
{
s= push_stackt(s,x);
scanf("%d",&x);
}
//r=s->next;
while(s!=NULL)//输入0时循环停止
{
printf("%d ",s->next ->data);
s=s->next; //循坏往下面跳,使指针指向下一个
}
return 1;
}