#include <stdio.h>/*带头结点的链接*/
#include <stdlib.h>
typedef struct Node
{
int data;
struct Node* next;
}node;
typedef struct
{
node* top;
}stack;
void initstack(stack *s)
{
s->top=(node*)malloc(sizeof(node));
s->top->next=NULL;
}
int stackempty(stack s)
{
if(s.top->next==NULL)
return 1;
else
return 0;
}
int enterstack(stack *s,int e)
{
node *p;
p=(node*)malloc(sizeof(node));
if(!p)
{
printf("申请内存失败/n");
return 0;
}
p->data=e;
p->next=s->top;/*类似与插入一个元素,先断开头结点指针指向的,再连接*/
s->top=p;
return 1;
}
int popstack(stack *s)
{
node *p;
int e;
p=s->top;
e=p->data;
printf("%d ",e);
s->top=p->next;
free(p);
return 1;
}
void main()
{
stack s;
int e,i,count=0;
char ch;
initstack(&s);
printf("请输入元素的值/n");
scanf("%d",&e);
count++;
enterstack(&s,e);
while(ch=getchar()!=EOF)
{
printf("请继续输入/n");
scanf("%d",&e);
count++;
enterstack(&s,e);
printf("是否继续,继续请按任意键,停止请按ctrl+z/n");
ch=getchar();
}
printf("栈中现在共有%d个元素/n",count);
printf("栈中元素按先进后出的顺序出栈为/n");
for(i=0;i<count;i++)
popstack(&s);
printf("/n");
}
栈的链式建立
最新推荐文章于 2022-08-02 20:34:43 发布