从单个链表中弹出堆栈的c++实现



在单链表堆栈中有两个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。

相关内容

  • 没有找到相关文章

最新更新