从Stack C ++的单链接列表实现中弹出

时间:2015-07-27 23:44:01

标签: c++ linked-list stack

我在单链表列表堆栈中有两个pop()函数。但无法弄清楚为什么一个比另一个更正确。

POP1:
X = head;
head = head->getNext();
return X;

POP2:
head = head->getNext();
X = head;
return X;

我的答案是POP1,但我不确定为什么POP2不正确。谢谢你能给我的任何帮助。

2 个答案:

答案 0 :(得分:2)

因为在POP2中你从堆栈的顶部删除项目,扔掉它(即不要返回它),然后你返回堆栈的当前顶部(这实际上是你开始时的第二项) )。

答案 1 :(得分:0)

假设列表看起来像

此时

A -> B -> C -> D -> NULL head=A

因此,功能应该从列表中删除并返回A。让我们看看POP1和POP2在做什么。

POP1:

X = A;
head = B;
return A; 

此时列表看起来像B -> C -> D -> NULL,头部指向B.返回值为A.所有看起来都很好。

POP2:

head = B;
X = B;
return B; 

此时列表看起来像B -> C -> D -> NULL,头部也指向B.但是等等!它返回B而不是A.

希望这澄清。