下面的代码片段用于反转单链表,请进行( )修改,使其能正确实现相应功能。
ListNode* reverseLinkedList(ListNode* head) {
ListNode* prev = nullptr;
ListNode* current = head;
while (current != nullptr) {
ListNode* next = current->next;
current->next = next;
prev = current;
current = next;
}
return prev;
}链表分为单向/双向/循环链表,插入删除O(1),但查找O(n)。注意指针操作的顺序,防止断链。
链表操作要特别注意指针修改的顺序。例如在节点前插入时,先新节点→next = 当前→next,再当前→next = 新节点。顺序颠倒会导致断链。
【考点】链表反转|指针重连逻辑|循环边界条件
本考点位于 GESP 六级 C++ 大纲的"数据结构与算法"模块。命题人专门选这道链表反转题,是因为它表面是经典算法题,实则卡住大部分考生对指针操作顺序的理解——链表反转是面试高频考点,但代码里一个符号写错就全盘皆输。