链表中奇数位和偶数位的置换

简介: 链表中奇数位和偶数位的置换

1. 题目描述

两两交换链表中的节点

2. 题目分析

1.链表如下所示:

2. 建立一个root结点,并建立两个结点指针,如图所示:

注意:这里的0结点,是JAVA建立root结点是附带的:ListNode root = new ListNode(0);

3. 思路如下:

将p1.next连接到p2.next(0----->2),如下:

将p2.next连接到p1.next.next(1----->3),如下:

将p1.next.next连接到p2(相当于2----->1),如图所示:

千万不要链表越界,注意p2指针的范围while(p2 != null && p2.next != null)

3. 题目代码

class Solution {
    public ListNode swapPairs(ListNode head) {
        if(head == null){
            return head;
        }
        ListNode root = new ListNode(0);
        root.next = head;
        ListNode p1 = root;
        ListNode p2 = root.next;
    while(p2 != null && p2.next != null) {
      p1.next = p2.next;
      p2.next = p1.next.next;
            p1.next.next = p2;
      p1 = p2;
      p2 = p2.next;
    }
    return root.next;
    }
}


相关文章
|
6月前
|
Java 编译器 C++
颠倒二进制位(C++)
颠倒二进制位(C++)
46 1
|
5月前
|
C语言
【C语言刷题系列】交换整数的奇数位和偶数位
【C语言刷题系列】交换整数的奇数位和偶数位
|
6月前
|
算法
奇偶分家(2016)
奇偶分家(2016)
420 1
|
6月前
用一行代码(宏)交换一个二进制整数的奇数位和偶数位
用一行代码(宏)交换一个二进制整数的奇数位和偶数位
|
6月前
|
机器学习/深度学习
【剑指offer】-和为S的连续正数序列-39/67
【剑指offer】-和为S的连续正数序列-39/67
|
6月前
打印2进制位数的奇数位和偶数位
打印2进制位数的奇数位和偶数位
|
11月前
|
算法 测试技术 C#
C++二分查找算法的应用:最小好进制
C++二分查找算法的应用:最小好进制
7-5 奇偶分家
输入第一行给出一个正整N(≤1000);第2行给出N个非负整数,以空格分隔。
剑指offer 64. 和为S的连续正数序列
剑指offer 64. 和为S的连续正数序列
64 0
|
算法
C生万物 | 使用宏将一个整数的二进制位的奇数位和偶数位交换
妙用位运算【按位与、按位或、移位】,交换一个二进制位的奇偶数位
118 0
C生万物 | 使用宏将一个整数的二进制位的奇数位和偶数位交换