LinkedStack的bottomsUp方法逻辑疑问及使用咨询
链式栈bottomsUp方法问题解析
一、底部出现两个null的原因
你描述的操作逻辑并非完整的栈反转,只是将栈底节点移到栈顶,但未处理中间节点的指向,且你看到的“两个null”大概率是对栈结构和指针更新的误解:
- 原栈结构:栈顶为1,节点链为
1->2->3->4->null,其中4是栈底节点,next为null。 - 你的操作步骤:
- 找到倒数第二个节点n=3;
- 将4设为新栈顶,且让4.next=原栈顶1;
- 把n.next设为null。
- 此时实际节点链为
4->1->2->3->null,末尾仅一个null。你看到的“两个null”,可能是因为你的栈类同时维护了top和bottom指针,但操作后仅更新top为4,未将bottom更新为3——原bottom指针仍指向4,而4的next是1(并非null),当你尝试从bottom反向遍历时,就会误以为存在两个null(实际是3的next为null,而你错误认为4应该是栈底、next为null)。
另外,这个操作根本没有实现栈的“倒置”(bottomsUp应该是将栈完全反转,让原栈底变栈顶,原栈顶变栈底),正确的倒置需要逐个反转节点的指向,而非简单移动栈底节点到栈顶。
二、链式栈的遍历起始节点
链式栈的遍历起始节点永远是栈顶指针(top)。因为栈是后进先出结构,所有操作围绕栈顶进行,遍历也需从栈顶开始,依次访问每个节点的next属性,直到遇到null为止——这是链式栈的标准遍历方式,无需以栈底节点作为起始点。
内容的提问来源于stack exchange,提问作者Iris
相关产品推荐
相关产品推荐

