数据结构初学者求教 为什么pop里的e前有“&”符号,而push里没有?
发布网友
发布时间:2024-07-22 08:41
我来回答
共2个回答
热心网友
时间:2024-07-26 01:38
首先,push函数是将e的值压进堆栈里对吧,那就是说e这个变量本身除了提供值以外就不需要用到了,所以e的值保持原样就可以了,但是POP函数不同,pop函数是将堆栈栈顶元素弹出来,那既然弹出堆栈肯定要用个变量保存吧,就是用e来保存这个值,如果没有&的话e就不能将值带回,所以要加&,或者用指针也可以带回值。
热心网友
时间:2024-07-26 01:40
int pop (sqstack &s, int &e)//删除s的栈顶元素,用e返回其值;
{//&e是代表对e的引用,这样在函数pop里面改变e的值,实参也会改变
//比如 int x;pop(&s, x);这样就可以把值通过x返回
if(s.top==s.base) return 0;
e= *--s.top;
return 1;
}
int push (sqstack &s, int e)// 插入元素e为新的栈顶元素
{//这里只是用到了e的值,不用返回,故不加&
if(s.top - s.base >= s.stacksize)
{
s.base = (int*)realloc(s.base, (s.stacksize+100) * sizeof(int));
if(!s.base) exit(-2);
s.top = s.base +s.stacksize;
s.stacksize+= 100;
}
*s.top ++= e;
return 1;
}