文章

159

粉丝

0

获赞

0

访问

9.8k

头像
2019年计算机学科专业基础综合试题 - 第41题回答
数据结构
发布于2025年7月7日 18:18
阅读数 32

(1)基本思想:1.找中间节点 快慢指针 , 一个一次走一步一个一次走两步 当快指针走到链表尾 null时慢指针指向中间节点

2.逆转后半链表

3.合并两个链表

(2)

#include<iostream>
typedef struct node{
	int data;
	struct node *next;
} NODE;
void rearrangelist(node *head){
	if(head == nullptr || head.next ==nullptr ||head.next.next = nullptr){
		return // 空链表 如果 只有一个节点的链表,无需重新排列
	}
	NODE *slow = head;
	NODE *fast = head;
	while(fast != nullptr && fast->next !=nullptr){
		slow = slow->next;
		fast = fast->next->next; 
	}//slow指向中间节点 
	// 2. 分割链表:将链表分为两个部分
	NODE *secondhalfhead =slow->next;
	slow->next = nullptr;
	
	 // 3. 逆置后半部分链表
	NODE *prev = nullptr;
    NODE *curr = secondHalfHead;
    NODE *next = nullptr;
    while(curr != nullptr){
    	next = curr->next;
    	curr->next = pre;
    	pre = curr;
    	curr = next;
	}
	secondHalfHead = pre;
	 // 4. 合并两个链表
    NODE *firstListCurr = head->next; // 前半部分链表的当前节点
    NODE *secondListCurr = secondHalfHead; // 后半部分链表的当前节点
    N...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发