C++ 链表中间节点插入开头 - 详细步骤与代码示例
首先,需要遍历链表找到中间节点。可以使用快慢指针的方法,快指针每次走两步,慢指针每次走一步,当快指针到达链表尾部时,慢指针就指向了中间节点。
然后,将中间节点从原来的位置断开,将其前面的节点指向其后面的节点。接着,将中间节点插入链表开头即可。代码如下:
void insertMidToHead(ListNode* head) {
if (head == nullptr || head->next == nullptr) {
return;
}
ListNode* slow = head;
ListNode* fast = head;
ListNode* prev = nullptr;
while (fast != nullptr && fast->next != nullptr) {
prev = slow;
slow = slow->next;
fast = fast->next->next;
}
prev->next = slow->next;
slow->next = head;
head = slow;
}
其中,ListNode 是链表节点的结构体,包含 val 和 next 两个成员变量。注意,需要特判链表为空或只有一个节点的情况。
原文地址: https://www.cveoy.top/t/topic/lAzw 著作权归作者所有。请勿转载和采集!