[链表]两两交换链表中的节点

两两交换链表中的节点

注意,这里是交换链表的物理节点。而不是交换它的数值。如果链表的节点个数为奇数,则最后一个节点不需要处理。

让我们在操作三四两个节点的时候,要将指针指向三的前一个节点。

cpp 复制代码
首先定义一个虚拟头节点。虚拟头节点的next指向真正的头节点。
dummyhead->next = head
cur = dummyhead
cur先指向dummyhead才能操作头节点和下一个节点。

接下来就是一个遍历的过程。当这个链表的节点数量为偶数的时候,cur.next空结束循环;当链表节点为奇数的时候,cur.next.next空结束循环.

while(cur->next != null && cur->next->next != null )  {

    如果把这两个条件反过来,容易发生空指针异常。因为先写后一个条件时,cur->next可能为空。
    cur指向dummyhead,是我们新new的一个节点,不可能为空
    dummyhead指向2,2指向1,1指向3

    我们在将dummyhead指向节点二之前。要将节点一的指针保存,否则没有办法表示节点1。也没有办法对节   点1进行操作;同时在我们进行节点二的赋值操作之前,对节点三也要进行保存否则,节点三也没有办法表示

    temp = cur->next   保存了节点1
    temp1 = cur->next->next->next   保存了节点3
    cur->next = cur->next->next
    cur->next->next = temp 
    temp->next = temp1 

    接下来我们要移动cur指针
    cur = cur->next->next

return dummyhead->next

python代码

python 复制代码
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def swapPairs(self, head: Optional[ListNode]) -> Optional[ListNode]:
        dummyhead =  ListNode()
        dummyhead.next = head
        cur = dummyhead
        while cur.next and cur.next.next :
            temp = cur.next
            # 1
            temp1 = cur.next.next.next
            # 3
            cur.next = cur.next.next
            # dummy-2
            cur.next.next = temp
            # 2-1
            temp.next =  temp1
            # 1-3
            cur = cur.next.next
            # cur->1
        return dummyhead.next
相关推荐
qeen871 天前
【数据结构】建堆的时间复杂度讨论与TOP-K问题
c语言·数据结构·c++·学习·
图码1 天前
如何用多种方法判断字符串是否为回文?
开发语言·数据结构·c++·算法·阿里云·线性回归·数字雕刻
我星期八休息1 天前
IT疑难杂症诊疗室:AI时代工程师Superpowers进化论
linux·开发语言·数据结构·人工智能·python·散列表
漂流瓶jz1 天前
UVA-1152 和为0的4个值 题解答案代码 算法竞赛入门经典第二版
数据结构·算法·二分查找·题解·aoapc·算法竞赛入门经典·uva
你撅嘴真丑1 天前
map 与 set容器的应用--话题焦点人物
数据结构
生成论实验室1 天前
《事件关系阴阳博弈动力学:识势应势之道》第二篇:阴阳博弈——认知的动力学基础
数据结构·人工智能·科技·神经网络·算法
li1670902701 天前
第二十七章:智能指针
c语言·数据结构·c++·visual studio
风筝在晴天搁浅1 天前
LeetCode 92.反转链表Ⅱ
算法·leetcode·链表
WL_Aurora1 天前
Python 算法基础篇之链表
python·算法·链表
代码中介商1 天前
数据结构开篇:从问题到解决方案
数据结构