我写了一个关于栈的程序
你试试就知道了
#include<stdio.h>
#include<stdlib.h>
#define MAX
20
typedef struct {
int stack[MAX];
int top;
}sqstack;
void Initstack(sqstack *p)
/*初始化*/
{
if(!p)
printf("error");
p->top=-1;\
}
void Push(sqstack *p,int x)
{
if(p->top<MAX-1)
{
p->top=p->top+1;
p->stack[p->top]=x;
}
else printf("overflow!\n");
}
int Pop(sqstack *p)
{
int x;
if(p->top!=0)
{
x=p->stack[p->top];
printf("以前的栈顶元素%d已经被删除 !\n",x);
p->top=p->top-1;
return x;
}
else
{
printf("underflow!\n");
return 0;
}
}
int Gettop(sqstack *p)
{
int x;
if(p->top!=0)
{
x=p->stack[p->top];
return x;
}
else
{
printf("underflow\n");
return 0;
}
}
void Outstack(sqstack *p)
{
int i;
printf("\n");
if(p->top<0)
{
printf("这是一个空栈 !");
printf("\n");
}
else
for(i=p->top;i>=0;i--)
printf("第 %d 个数据元素是: %d\n",i,p->stack[i]);
}
void Setempty(sqstack *p)
{
p->top=-1;
}
main()
{
sqstack *q;
int y,cord;
int a;
do{
printf("\n");
printf("第一次使用必须初始化 !\n");
printf("\n");
printf("\n
主菜单
\n");
printf("\n
1
初始化顺序栈
\n");
printf("\n
2
插入一个元素
\n");
printf("\n
3
删除栈顶元素
\n");
printf("\n
4
取栈顶元素
\n");
printf("\n
5
置空顺序栈
\n");
printf("\n
6
结束程序运行
\n");
printf("\n----------------------------------\n");
printf("请输入您的选择 (1,2,3,4,5,6)");
scanf("%d",&cord);
printf("\n");
switch(cord)
{
case 1:
{
q=(sqstack *)malloc(sizeof(sqstack));
Initstack(q);
Outstack(q);
}break;
case 2:
{ printf("请输入要插入的数据元素 :a=");
scanf("%d",&a);
Push(q,a);
Outstack(q);
}break;
case 3:
{
Pop(q);
Outstack(q);
}
break;
case 4:
{
y=Gettop(q);
printf("\n 栈顶元素为 : %d",y);
Outstack(q);
}break;
case 5:
{
Setempty(q);
printf("\n顺序栈被置空! \n");
Outstack(q);
}break;
case 6:
exit(0);
}
}while(cord<=6);
}