在单链表堆栈中有两个pop()函数。但我不明白为什么一个比另一个更正确。
POP1:
X = head;
head = head->getNext();
return X;
POP2:
head = head->getNext();
X = head;
return X;
我的答案是POP1,但我不确定为什么POP2是不正确的。谢谢你给我的帮助。
因为在POP2中,你从堆栈的顶部删除项目,扔掉它(即不返回它),然后你返回当前堆栈的顶部(这实际上是你开始时的第二个项目)
假设列表看起来像
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。