当前位置:网站首页>奇偶链表[链表操作的两种大方向]
奇偶链表[链表操作的两种大方向]
2022-07-01 00:39:00 【REN_林森】
链表操作的两种大方向
前言
链表操作有两种方式,一种是简便操作,就在链表上操作;一种是非常nice的全能型操作,设置dummy节点,可以统一空链表/第一节点操作,把满足条件的节点以头插/尾插放到dummy之后。
一、链表操作的两种大方向

二、dummy
package everyday.listNode;
// 奇偶链表
public class OddEvenList {
/* target:先奇后偶,把偶数放前面,奇数放后面。 链表操作有两种方式,一种是简便操作,就在链表上操作; 一种是非常nice的全能型操作,设置dummy节点,可以统一空链表/第一节点操作,把满足条件的节点以头插/尾插放到dummy之后。 */
public ListNode oddEvenList(ListNode head) {
int cnt = 1;// 先奇后偶/先偶后奇,把同类的按顺序尾插法放在一起。
ListNode dummy1 = new ListNode();
ListNode p1 = dummy1;
ListNode dummy2 = new ListNode();
ListNode p2 = dummy2;
// 获取奇偶链表。
while (head != null) {
// 拿到处理好的节点。
ListNode node = head;
head = head.next;// 先走到下一个节点,好把上一个节点处理干净。
node.next = null;
if ((cnt & 1) == 1) {
p1.next = node;
p1 = p1.next;
}
if ((cnt & 1) == 0) {
p2.next = node;
p2 = p2.next;
}
// 标识下一个奇偶。
cnt = ++cnt & 1;
}
// 将两条链表相连。
p1.next = dummy2.next;
return dummy1.next;
}
// Definition for singly-linked list.
public class ListNode {
int val;
ListNode next;
ListNode() {
}
ListNode(int val) {
this.val = val;
}
ListNode(int val, ListNode next) {
this.val = val;
this.next = next;
}
}
}
总结
1)操作链表的两种方式,一般推荐dummy法。如果是很简单的链表操作,也可以直接原地链表操作。
参考文献
边栏推荐
- 最长的可整合子数组的长度
- 双位置继电器ST2-2L/AC220V
- The longest selling mobile phone in China has been selling well since its launch, crushing iphone12
- JS bubble sort and select sort
- Cmu15445 (fall 2019) project 1 - buffer pool details
- Implementation of date class
- [daily record] - bug encountered in BigDecimal division operation
- Pytorch installs and uses GPU acceleration
- 关于Unity一般的输入操作方式
- (学习力+思考力) x 行动力,技术人成长的飞轮效应总结
猜你喜欢

Stack frame

Oracle temporary table explanation

Golang treasure house recommendation

HDU 2488 A Knight's Journey(DFS)
![[daily record] - bug encountered in BigDecimal division operation](/img/82/3105586841076b9bb1c57eac221ddf.png)
[daily record] - bug encountered in BigDecimal division operation

C language file operation for conquering C language

K210工地安全帽

NE555 waveform generator handle tutorial NE555 internal structure (I)

Oracle-表的创建与管理

二十多年来第一次!CVPR最佳学生论文授予中国高校学生!
随机推荐
Cmu15445 (fall 2019) project 1 - buffer pool details
对libco的一点看法
剑指 Offer 18. 删除链表的节点
[original] PLSQL index sorting optimization
Double linked list: initialize insert delete traversal
Get to know the drawing component of flutter - custompaint
给按钮的边框和文字设置不同的背景色
CMU15445 (Fall 2019) 之 Project#1 - Buffer Pool 详解
Authentication principle of Ranger plug-in
Unit test concept and purpose
Self examination before school starts
染色法判断二分图
获取屏幕高度
pytorch编程知识(2)
The principle of journal node
Q弹松软的大号吐司,带来更舒服的睡眠
Listview in flutter application development
C#生成putty格式的ppk文件(支持passphrase)
Exercises on recursion in C language
Service