本文介绍在链表遍历打印过程中精准控制分隔符(如逗号)的通用技巧,重点解决“末尾多出一个逗号”的常见问题,提供简洁、健壮且面试友好的实现方案。
在链表遍历中,常见的错误模式是“先打印数据,再无条件打印逗号”,这会导致最后一个节点后仍输出逗号(如 10,20,30,40,50,),违反输出规范——尤其在算法面试或OJ判题中,这种格式差异会直接导致测试用例失败。
正确思路是:逗号应作为“当前节点与下一个节点之间的分隔符”,而非“当前节点的后缀”。因此,是否打印逗号,应取决于当前节点是否有后继节点。
以下是优化后的 printList 方法:
public static void printList(Node head) {
Node curr = head;
while (curr != null) {
System.out.print(curr.data);
if (curr.next != null) { // 仅当存在下一个节点时才打印逗号
System.out.print(",");
}
curr = curr.next;
}
}✅ 优势说明:
⚠️ 注意事项:
ceAll(",$", "") 等事后修正方式——低效且掩盖逻辑缺陷; 总结:控制分隔符的关键在于将分隔动作绑定到“连接关系”而非“节点自身”。这一原则不仅适用于链表,也广泛适用于数组遍历、树的层序输出、CSV生成等场景,是编写健壮格式化输出代码的基础思维。