有关数据结构栈的代码
发布网友
发布时间:2022-04-19 23:38
我来回答
共2个回答
热心网友
时间:2022-05-19 10:10
status initstack(Sqstack & s)
{
int i,p;
s.base=(selemtype *)malloc(stack_intit_size*sizeof(selemtype));
if(!s.base)
return (OVERFLOW);
printf("enter 5 numbers:\n");
s.top = s.base; //增加栈顶指向base
for(i=0;i<5;i++)
{
//s.top=(selemtype *)malloc(stack_intit_size*sizeof(selemtype)); 这一句不要,前面base已经申请过内存空间了
scanf("%d",&p);
*(s.top)++=p;
}
s.stacksize+=stack_intit_size;
return OK;
}
status push(Sqstack &s,selemtype e)
{
int p;
if(s.top-s.base>=s.stacksize)
{
s.base=(selemtype *)realloc (s.base,(s.stacksize)*sizeof(selemtype));
//这句改为s.base=(selemtype *)realloc(s.base, (s.statcksize + stackincrement)*sizeof(selemtype)); realloc的时候需要指明新的内存大小
if(!s.base) exit (OVERFLOW);
s.top=s.base+s.stacksize;
s.stacksize+=stackincrement;
}
for(int i=0;i<5;i++) //这条for语句不需要,push动作只要把当前元素放到栈顶就可以了
{
*s.top++=e;p=*s.top;
}
printf("%d\n",p);
return OK;
}
int main()
{
Sqstack s;
initstack(s);
printf("\n");
push(s,2);
return 0;
}追问这样的运行结果是个随机数啊
追答不好意思,漏看了一句
status initstack(Sqstack & s)
{
int i,p;
s.base=(selemtype *)malloc(stack_intit_size*sizeof(selemtype));
if(!s.base)
return (OVERFLOW);
printf("enter 5 numbers:\n");
s.top = s.base; //增加栈顶指向base
for(i=0;i<5;i++)
{
//s.top=(selemtype *)malloc(stack_intit_size*sizeof(selemtype)); 这一句不要,前面base已经申请过内存空间了
scanf("%d",&p);
*(s.top)++=p;
}
s.stacksize+=stack_intit_size; //这句改成s.stacksize=stack_intit_size;
return OK;
}