#include<stdio.h>
#include<malloc.h>
/*结构体定义*/
#define MAXSIZE 1024
typedef struct
{
int data[MAXSIZE];
int top;
}SeqStack;
/*置空栈*/
SeqStack *Init_SeqStack()
{
SeqStack *s;
s=(SeqStack *)malloc(sizeof(SeqStack));
s->top=-1;
return s;
}
/*判断栈空的算法*/
int Empty_SeqStack(SeqStack *s)
{
if(s->top==-1)
return 1;
else
return 0;
}
/*入栈算法*/
int Push_SeqStack(SeqStack * s,int x)
{
if(s->top==MAXSIZE-1)
return 0;
else
{
s->top++;
s->data[s->top]=x;
return 1;
}
}
/*出栈*/
int Pop_SeqStack(SeqStack * s,int * x)
{
if(Empty_SeqStack(s))
return 0;
else
{
* x=s->data[s->top];
s->top--;
return 1;
}
}
/*取栈顶元素*/
int Top_SeqStack(SeqStack * s,int * x)
{
if(Empty_SeqStack(s))
return 0;
else
{
* x=s->data[s->top];
return 1;
}
}
/*数值转化算法1*/
/*打印菜单*/
void print_menu()
{
printf("\n菜单如下:\n");
printf("1.输入栈内元素\n");
printf("2.输出栈内元素\n");
printf("3.输出栈顶元素\n");
printf("0.EXIT\n\n");
printf("请输入你选菜单的数字:\n");
}
/*主菜单*/
int main ()
{
SeqStack * s,*top;
int op,flag,i,x;
printf("顺序表\n");
top=Push_SeqStack(s);
printf(top);
print_menu();
while(scanf("%d",&op)!='\n')
{
flag=1;
switch(op)
{
case 0:
flag=0;
break;
case 1:
printf("输入栈内元素:\n");
int i;
scanf("%d",&i);
Push_SeqStack(top,i);
break;
default:
printf("输入的数字非法,程序已退出!\n");
break;
}
if(!flag)
{
printf("程序将退出!!谢谢使用!!\n");
break;
}
else{
print_menu();
}
}
return 0;
}
实参太少,是什么意思