你的代码存在几个问题:
- 在创建新节点
node的位置不正确。应该在每次遍历链表之前创建一个新的节点,而不是在循环内部创建。 - 循环条件
tmp->next!=nullptr会导致你只反转了链表的倒数第二个节点及其之后的部分。应该将循环条件修改为tmp != nullptr。
下面是修正后的代码示例:
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode *newList = new ListNode();
newList->next = nullptr;
ListNode *node;
ListNode *tmp = head;
while(tmp != nullptr){
node = new ListNode();
node->val = tmp->val;
node->next = newList->next;
newList->next = node;
tmp = tmp->next;
}
return newList->next;
}
};
这样应该可以正确地反转链表。同样要记得释放申请的动态内存空间,避免内存泄漏。
内容由零声教学AI助手提供,问题来源于学员提问




