关于顺序栈的初始化和出入栈的问题。求助。。。
#include<stdio.h>#include<stdlib.h>
#include<conio.h>
#include<malloc.h>
#define stack_init_size 100
#define stackincrement 10
typedef struct sqstack
{
char *elem;
int *base;
int *top;
int stacksize;
}sqstack;
void initstack(sqstack s)
{s.base=(int*)malloc(stack_init_size*sizeof(int));
s.top=s.base;
s.stacksize=stack_init_size;
}
void gottop(sqstack s,int e)
{
if (s.top=s.base)
printf("栈满\n");
else
{e=*(s.top-1);
}
}
void push(sqstack s, int e)
{
if(s.top-s.base>=s.stacksize)
{s.base=(int*)realloc(s.base,(s.stacksize+stackincrement)*sizeof(int));
if(!s.base)
{
printf("overflow\n");exit(1);
}
s.top=s.base+s.stacksize;
s.stacksize+=stackincrement;
}
*s.top++=e;
}
void pop(sqstack s, int e)
{
if(s.top==s.base)
printf("空栈");
else
e=*--s.top;
}
int main()
{
int a,e,m;
char flag;
sqstack s;
printf("input\n");
initstack(s);
scanf("%d",&m);
e=m;
push(s,e);
printf(" *******************************************************\n");
printf(" * 请选择栈的操作 *\n");
printf(" * *\n");
printf(" * A:返回栈顶的元素 B:插入元素 *\n");
printf(" * *\n");
printf(" * C:推出元素 *\n");
printf(" *******************************************************\n");
while(a)
{ printf("\n请选择操作:");
scanf(" %c",&flag);
switch(flag)
{
case'A':
case'a': { printf("\n 栈顶元素e=");
gottop(s,e);
break;
}
case'B':
case'b': { printf("\n 插入元素e=");
push(s,e);
break;
}
case'C':
case'c': { printf("\n 推出元素e=");
pop(s,e); break;}
default:
printf("\n 您的选择错误,请重新选择!\n");
}
}
}