#include <stdio.h>
#include <malloc.h>
typedef struct stack {int data;struct stack *next;}stack,*Linkstack;
int push (Linkstack &s,int a);
int pop (Linkstack &s,int &t);
void init (Linkstack &s);
int Gettop (Linkstack s, int &t);
int main()
{
Linkstack s;
init (s);
int a,i,b,c,t;
scanf ("%d",&a);
for (i=0;i<a;i++) //循环压栈
{
scanf ("%d",&b);
push (s,b);
}
Gettop (s,t); //取栈顶元素
printf ("%d \n",t);
for (i=0;i<a;i++) //循环弹栈
{
pop (s,c);
printf ("%d ",c);
}
return 0;
}
void init (Linkstack &s) //栈指针//
{
s=NULL;
printf ("Finsh\n");
}
int push (Linkstack &s,int a)
{
Linkstack p; //头插
p=(Linkstack )malloc(sizeof (stack));
p->data=a;
p->next=s;
s=p;
return 1;
}
int pop (Linkstack &s,int &t) //返回当前栈顶data 记录栈顶结点 结点后移 删除记录结点
{
Linkstack p;
t=s->data;
p=s;
s=s->next;
delete p;
return 0;
}
int Gettop (Linkstack s, int &t)
{
t=s->data; //返回栈顶data
return 0;
}
链栈
最新推荐文章于 2024-10-12 20:37:29 发布