你的代码仍然有一个问题。在循环中,你将tmp指针向后移动了一次,但是没有更新node节点的值,导致新链表中每个节点的值都与原链表最后一个节点相同。
以下是修正后的代码:
class Solution {
public:
ListNode* reverseList(ListNode* head) {
if (head == nullptr || head->next == nullptr) {
return head;
}
ListNode* newList = nullptr;
ListNode* tmp = head;
while (tmp != nullptr) {
ListNode* node = new ListNode(tmp->val);
node->next = newList;
newList = node;
tmp = tmp->next;
}
return newList;
}
};
修正后的代码会正确地反转给定链表,并返回反转后的头节点。
内容由零声教学AI助手提供,问题来源于学员提问




