📄 3-1-2-1.txt
字号:
/*链栈的基本运算与实现*/
#include <stdio.h>
#include <malloc.h>
typedef int datatype;
typedef struct node
{
datatype data;
struct node *next;
}StackNode,*LinkStack;
void menu();
LinkStack Init_LinkStack();
int Empty_LinkStack(LinkStack top);
LinkStack Push_LinkStack(LinkStack top,datatype x);
LinkStack Pop_LinkStack(LinkStack top,datatype *s);
void main()
{
int n,m=1;
LinkStack L=NULL;
/*clrscr();*/
while(m)
{
menu();
scanf("%d",&n);
switch(n)
{
case 1: L=Init_LinkStack();
break;
case 2:{
StackNode *p=L;
int flag;
flag=Empty_LinkStack(L);
if(flag==0)
{
while(p)
{
printf("%5d",p->data);
p=p->next;
}
}
else
printf("stack empty!\n");
break;
}
case 3:{
LinkStack p;
datatype x;
printf("please input a value x:\n");
scanf("%d",&x);
L=Push_LinkStack(L,x);
p=L;
while(p)
{
printf("%5d",p->data);
p=p->next;
}
break;
}
case 4:{
datatype x,*s;
LinkStack p;
s=&x;
L=Pop_LinkStack(L,s);
p=L;
while(p)
{
printf("%5d",p->data);
p=p->next;
}
printf("\n%5d\n",x);
break;
}
case 5:m=0;
}
}
}
void menu()
{
/*clrscr();*/
printf("\n");
printf("\t\t1.stack zhi kong\n\n");
printf("\t\t2.empty stack\n\n");
printf("\t\t3.push stack\n\n");
printf("\t\t4.pop stack\n\n");
printf("\t\t5.exit\n\n");
printf("\n\n\n\tplease select:");
}
LinkStack Init_LinkStack()
{
return NULL;
}
int Empty_LinkStack(LinkStack top)
{
if(top==NULL)
return 1;
else
return 0;
}
LinkStack Push_LinkStack(LinkStack top,datatype x)
{
StackNode *s;
s=(StackNode*)malloc(sizeof(StackNode));
s->data=x;
s->next=top;
top=s;
return top;
}
LinkStack Pop_LinkStack(LinkStack top,datatype *s)
{
StackNode *p;
int j=0;
if(top==NULL)
{
return NULL;
}
else
{
*s=top->data;
p=top;
top=top->next;
free(p);
return top;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -