上面这段代码printf不出最后一个节点怎么办
时间: 2024-09-19 10:17:27 浏览: 30
如果上面的代码在打印完链表时不包括最后一个节点,可能是由于循环条件判断有误。在`while`循环中,当`current->next == NULL`时,说明已经到达了链表的尾部,这时需要特殊处理一下。以下是修改后的版本:
```c
void printList(Node* head) {
if (head == NULL) { // 首先检查链表是否为空
printf("链表为空\n");
return;
}
Node* current = head; // 当前节点初始化为头节点
while (current != NULL) { // 当当前节点不为空时
printf("%d ", current->data); // 打印节点的数据
current = current->next; // 移动到下一个节点
}
// 添加打印尾节点的代码
if (current != NULL) { // 确保不是空指针
printf("%d", current->data); // 打印最后一个节点
} else {
printf("链表只有一个节点或为空\n");
}
printf("\n"); // 打印换行符结束
}
```
现在,即使链表只有一个元素,也能正确地打印最后一个节点。如果链表真的为空,会显示“链表为空”提示。
阅读全文