首页 > 试题广场 >

按照左右半区的方式重新组合单链表

[编程题]按照左右半区的方式重新组合单链表
  • 热度指数:1893 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个单链表的头部节点 head,链表长度为 N,如果 N 是偶数,那么前 N / 2 个节点算作左半区,后 N / 2 个节点算作右半区;如果 N 为奇数,那么前 N / 2 个节点算作左半区,后 N / 2 + 1个节点算作右半区。左半区从左到右依次记为 L1->L2->...,右半区从左到右依次记为 R1->R2->...,请将单链表调整成 L1->R1->L2->R2->... 的形式。

输入描述:
单链表的头节点 head。


输出描述:
在给定的函数内返回链表的头指针。
示例1

输入

6
1 2 3 4 5 6

输出

1 4 2 5 3 6

备注:
保证链表的长度不大于1000000
头像 总之就是非常可爱
发表于 2022-02-20 15:47:51
# include <bits/stdc++.h> using namespace std; struct list_node{     int val;     struct list_node * next; }; list_node * 展开全文
头像 Bob_linux
发表于 2020-03-01 17:20:22
list_node * relocate(list_node * head) { //////在下面完成代码 if(head == nullptr || head->next == nullptr) return head; list_node* slow = head 展开全文