这是pop()
函数,我写的是弹出一个堆栈的元素。到目前为止,我已成功将元素推入堆栈并显示堆栈。所以,我想我的pop()
函数在某处出错了。这是我的pop函数:
void pop(int newstack[], int *newtop, int bound )
{
int item;
if(*newtop<0)
printf("\n CAUTION!!! UNDERFLOW");
else
{
item=newstack[*newtop];
*newtop--;
printf("\n Element popped->%d",item);
}
}
没有机会,我也发布了show()
功能:
void show_stack(int newstack[], int *top)
{
int i;
printf("\n");
for(i=0;i<=*top;i++)
printf("%d",newstack[i]);
}
我猜show函数没有错误。
答案 0 :(得分:5)
*
取消引用/间接运算符的优先级低于--
后缀减量运算符。你的陈述
*newtop--;
将被解析为
*(newtop--);
由于newtop--
的值是newtop
的当前值,因此该语句完全没有实现。它取消引用newtop
,并且对解除引用的值没有任何作用。
你真的想要这样的东西:
*newtop = *newtop - 1;
或
(*newtop)--;
有关*newtop--
等表达式的详细信息,请参阅this answer。
答案 1 :(得分:2)