
【数据结构系列】链表合并问题——链表的奇偶重排
发布日期:2021-05-07 21:21:44
浏览次数:11
分类:技术文章
本文共 1208 字,大约阅读时间需要 4 分钟。
题目描述
给定一个单链表,请设定一个函数,将链表的奇数位节点和偶数位节点分别放在一起,重排后输出。
注意是节点的编号而非节点的数值。示例1
输入{1,2,3,4,5,6}
返回值{1,3,5,2,4,6}
说明 1->2->3->4->5->6->NULL 重排后为 1->3->5->2->4->6->NULL示例2
输入{1,4,6,3,7}
返回值{1,6,7,4,3}
说明 1->4->6->3->7->NULL 重排后为 1->6->7->4->3->NULL 奇数节点有1,6,7,偶数节点有4,3。重排后为1,6,7,4,3解题思路
维护两个指针,一个指向奇数链表的头,一个指向偶数链表的头
先将链表分为奇数链表和偶数链表,然后再进行合并。 奇数位置的后面必定是偶数,偶数位置后面必定是奇数,利用这个特点即可解决这道题目~public class 链表的奇偶重排 { public class ListNode { int val; ListNode next = null; } public ListNode oddEvenList (ListNode head) { if (head == null || head.next == null) return head; /* odd 指向奇数节点的指针 oddHead 指向初始奇数节点的头指针 even 指向偶数节点的指针 evenHead 指向初始偶数节点的头指针 */ ListNode odd = head,oddHead = head,even = head.next,evenHead = head.next; while (even != null && even.next != null){ //奇数节点指向偶数节点的next odd.next = even.next; //奇数节点指针后移 odd = odd.next; //偶数节点指向奇数节点的next even.next = odd.next; //偶数节点后移 even = even.next; } //将奇数节点的next指向偶数节点的初始头指针 odd.next = evenHead; //返回奇数节点的初始头指针 return oddHead; }}
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2025年03月16日 21时51分16秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
扫雷小游戏——简单易懂
2019-03-04
软件架构-zookeeper快速入门
2019-03-04
「初级篇」跟我一起学docker(四)--容器的基本操作
2019-03-04
22 岁毕业做程序员的「普通」人,50 岁时的人生轨迹是怎样的?
2019-03-04
scala上界与下界、协变与逆变
2019-03-04
java稀疏数组
2019-03-04
全球数字货币加快研发
2019-03-04
数字化助力金融科技,实现产业良性循环
2019-03-04
2020-11-23(彻底理解KMP)
2019-03-04
angr学习笔记(7)(malloc地址单元符号化)
2019-03-04
windows环境利用start命令实现微信多开
2019-03-04
「CF149D」括号涂色 区间DP好题
2019-03-04
树状数组 模板总结
2019-03-04
「NOI2015」程序自动分析 并查集题解
2019-03-04
[JSOI2008]Blue Mary的战役地图 Hash题解
2019-03-04
结构型设计在工作中的一些经验总结
2019-03-04
如何提升员工体验 助力企业业务增长?这个棘手的问题终于被解决了!
2019-03-04
2020 AI 产业图谱启动,勾勒中国 AI 技术与行业生态
2019-03-04
“编程能力差,90%输在了数学上!”CTO:多数程序员都是瞎努力!
2019-03-04
我是程序员,我用这种方式铭记历史
2019-03-04