【问题标题】:Pop from a Single Linked List Implementation of a Stack C++从堆栈 C++ 的单链表实现中弹出
【发布时间】:2015-07-27 23:44:01
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c++ linked-list stack


    【解决方案1】:

    因为在 POP2 中,您从堆栈顶部移除项目,将其丢弃(即不返回它),然后返回当前堆栈顶部(实际上是您开始时的第二个项目)。

    【讨论】:

      【解决方案2】:

      假设列表看起来像

      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。

      希望这可以澄清。

      【讨论】:

        猜你喜欢
        • 2012-10-14
        • 2020-09-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-17
        • 1970-01-01
        • 1970-01-01
        • 2012-05-24
        相关资源
        最近更新 更多