首先,需要遍历链表找到中间节点。可以使用快慢指针的方法,快指针每次走两步,慢指针每次走一步,当快指针到达链表尾部时,慢指针就指向了中间节点。

然后,将中间节点从原来的位置断开,将其前面的节点指向其后面的节点。接着,将中间节点插入链表开头即可。代码如下:

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 两个成员变量。注意,需要特判链表为空或只有一个节点的情况。

C++ 链表中间节点插入开头 - 详细步骤与代码示例

原文地址: https://www.cveoy.top/t/topic/lAzw 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录