我在单链表列表堆栈中有两个pop()函数。但无法弄清楚为什么一个比另一个更正确。
POP1:
X = head;
head = head->getNext();
return X;
POP2:
head = head->getNext();
X = head;
return X;
我的答案是POP1,但我不确定为什么POP2不正确。谢谢你能给我的任何帮助。
答案 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.
希望这澄清。