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

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

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


相关文章
|
1月前
|
Java 编译器 C++
颠倒二进制位(C++)
颠倒二进制位(C++)
38 1
|
8月前
|
算法 测试技术 C#
C++数位算法:数字1的个数
C++数位算法:数字1的个数
|
7月前
|
C语言
写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换(C语言)
写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换(C语言)
45 0
|
1月前
|
算法
奇偶分家(2016)
奇偶分家(2016)
410 1
|
1月前
用一行代码(宏)交换一个二进制整数的奇数位和偶数位
用一行代码(宏)交换一个二进制整数的奇数位和偶数位
|
1月前
打印2进制位数的奇数位和偶数位
打印2进制位数的奇数位和偶数位
|
8月前
|
C语言
C语言之将长整型数中每一位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。
C语言之将长整型数中每一位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。
203 0
|
10月前
7-5 奇偶分家
输入第一行给出一个正整N(≤1000);第2行给出N个非负整数,以空格分隔。
80 0
|
11月前
打印整数二进制的奇数位和偶数位
打印整数二进制的奇数位和偶数位
31 0
|
12月前
找出列表中的偶数位元素
找出列表中的偶数位元素
50 0

热门文章

最新文章