调用LinkedList的addfirst方法元素未按预期添加,问题在哪?
问题分析与解决
核心误区:对addfirst方法的功能理解偏差
你的addfirst方法逻辑完全正确,问题出在你对这个方法的预期搞反了:
addfirst的作用是将新元素插入到链表的头部,成为新的头节点- 执行顺序对应的链表变化:
- 调用
list.addfirst(6):链表仅包含节点6 - 调用
list.addfirst(9):新节点9被放到链表最前端成为头节点,链表结构变为9 -> 6
- 调用
- 实际输出
9 -> 6 ->是符合方法设计的正确结果,代码逻辑没有问题,是你对addfirst的功能预期出现了偏差。
输出末尾多余箭头的优化
输出末尾的-> 是printt方法的小问题——每次循环都会打印currNode.data+" -> ",最后一个节点也会额外输出箭头。可以修改打印方法解决:
public void printt() { Node currNode = head; while (currNode != null) { System.out.print(currNode.data); // 仅当当前节点不是最后一个时,才打印箭头 if (currNode.next != null) { System.out.print(" -> "); } currNode = currNode.next; } }
修改后输出会变成9 -> 6,更符合直观的链表展示形式。
内容的提问来源于stack exchange,提问作者Dishank Gawas
相关产品推荐
相关产品推荐

