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

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

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;
    }
}


相关文章
|
7月前
|
Java 编译器 C++
颠倒二进制位(C++)
颠倒二进制位(C++)
48 1
|
3月前
|
C语言 Python
一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
81 3
|
C语言
写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换(C语言)
写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换(C语言)
70 0
|
6月前
|
C语言
【C语言刷题系列】交换整数的奇数位和偶数位
【C语言刷题系列】交换整数的奇数位和偶数位
|
7月前
|
算法 测试技术 C++
【位运算 拆位法】1835. 所有数对按位与结果的异或和
【位运算 拆位法】1835. 所有数对按位与结果的异或和
|
7月前
|
算法
奇偶分家(2016)
奇偶分家(2016)
424 1
|
7月前
用一行代码(宏)交换一个二进制整数的奇数位和偶数位
用一行代码(宏)交换一个二进制整数的奇数位和偶数位
|
7月前
打印2进制位数的奇数位和偶数位
打印2进制位数的奇数位和偶数位
|
算法 C++
剑指offer(C++)-JZ16:数值的整数次方(算法-位运算)
剑指offer(C++)-JZ16:数值的整数次方(算法-位运算)
7-5 奇偶分家
输入第一行给出一个正整N(≤1000);第2行给出N个非负整数,以空格分隔。