首页 > 其他分享 >24.两两交换链表中的结点

24.两两交换链表中的结点

时间:2023-03-18 16:23:41浏览次数:64  
标签:24 结点 ListNode cur head next 链表

24. 两两交换链表中的节点

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

示例 1:

输入:head = [1, 2, 3, 4]

输出:[2, 1, 4, 3]

示例 2:

输入:head = []
输出:[]
示例 3:

输入:head = [1]
输出:[1]

提示:

链表中节点的数目在范围 [0, 100] 内
0 <= Node.val <= 100

c++

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* swapPairs(ListNode* head) {
        // 使用虚拟头结点
        ListNode* dummyHead = new ListNode(0);
        dummyHead->next = head; // 将虚拟头结点指向head,这样方便后面删除操作
        ListNode* cur = dummyHead;
        while (cur->next != nullptr && cur->next->next != nullptr) {
            ListNode* tmp = cur->next; // 记录临时结点
            ListNode* tmp1 = cur->next->next->next; // 记录临时结点

            cur->next = cur->next->next; 
            cur->next->next = tmp;
            cur->next->next->next = tmp1;

            cur = cur->next->next; // cur移动两位,准备下一轮交换
        }
        return dummyHead->next;
    }
};

标签:24,结点,ListNode,cur,head,next,链表
From: https://www.cnblogs.com/luketebo/p/17231030.html

相关文章

  • 142.环形链表plus
    142.环形链表II给定一个链表的头节点head,返回链表开始入环的第一个节点。如果链表无环,则返回null。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链......
  • 面试题 02.07链表相交
    面试题02.07.链表相交给你两个单链表的头节点headA和headB,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回null。图示两个链表在节点c1开......
  • 双链表
    双链表双链表有两个指针,一个指向前一个指向后,数组模拟链表实现思想双链表有两个指针,一个指向前一个指向后,故定义三个数组\(l[N],r[N],val[N]\)\(l[N]指向的是当前......
  • 力扣 142 环形链表
    判断一个链表有无环,并且如果有环指出入环的位置。1、判断有无环是通过一快一慢指针来判断的。快的指针走每次走两步、慢的指针每次走一步,这样如果没有环的话他俩不会相遇......
  • 数据结构-->链表_01
    首次书写链表有关的知识,先来明确什么是链表?链表是一种物理存储结构上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的举一个形象化的现实生活中......
  • 【链表】复习/刷题 记录
    leetcode203.RemoveLinkedListElements/***Definitionforsingly-linkedlist.*structListNode{*intval;*ListNode*next;*ListNode......
  • P2495 [SDOI2011] 消耗战
     f[x]=SUM{min(f[y],z)}  (y是不重要的点)  建立虚树,然后dp #include<bits/stdc++.h>usingnamespacestd;constintN=3e6,M=N,inf=1e9;#d......
  • day3 | 203. 移除链表元素,206. 反转链表,707. 设计链表
    203.移除链表元素 题目描述 给你一个链表的头节点head和一个整数val,删除链表中的那些存储的值为val的节点,并且返回新的头节点。 思路: 1.创建一个虚拟头节点,......
  • 力扣---24. 两两交换链表中的节点
    给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。示例1:输入:head=[1,2,3,4]输出:[2,1,......
  • Photoshop 2023 v24.2.0中文版更新,最新PS 2023激活版下载及安装教程
    Photoshop2023是一款由AdobeSystems开发和发行的图像处理软件。Photoshop主要处理以像素所构成的数字图像。使用其众多的编修与绘图工具,可以有效地进行图片编辑工作。ps......