首页 > 其他分享 >两两交换链表中的节点(迭代)

两两交换链表中的节点(迭代)

时间:2024-12-22 12:20:03浏览次数:3  
标签:head ListNode 迭代 temp next 链表 节点

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

 

示例 1:

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

示例 2:

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

示例 3:

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

 

/**
 * 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) {
        //特殊情况处理
        if(head==nullptr||head->next==nullptr) return head;
        //设置头结点
        ListNode* pre = new ListNode();
        pre->next = head;
        //temp指向要交换的第一个节点的前驱节点
        ListNode* temp = pre;
        //确保第一个节点p和第二个节点q不为空
        while(temp->next&&temp->next->next){
            ListNode *p = temp->next;
            ListNode *q = temp->next->next;
            //交换p,q
            temp->next = q;
            p ->next = q->next;
            q-> next =p;
            //更新temp
            temp = p;
        }
        return pre->next;
    }
};

 

标签:head,ListNode,迭代,temp,next,链表,节点
From: https://www.cnblogs.com/yueshengd/p/18621982

相关文章

  • MATLAB图卷积神经网络GCN处理分子数据集节点分类研究
    全文链接:https://tecdat.cn/?p=38570本文主要探讨了如何利用图卷积网络(GCN)对图中的节点进行分类。介绍了相关的数据处理、模型构建、训练及测试等环节,通过对分子数据集的操作实践,展示了完整的节点分类流程,并对模型的效果进行了多方面评估,旨在为相关领域的研究与应用提供参考。图......
  • 合并两个有序链表(迭代)
    将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。  示例1:输入:l1=[1,2,4],l2=[1,3,4]输出:[1,1,2,3,4,4]示例2:输入:l1=[],l2=[]输出:[]示例3:输入:l1=[],l2=[0]输出:[0]思路:首先,我们设定一个哨兵节......
  • 初阶3 链表
    本章重点链表链表OJ题链表与顺序表区别1.链表1.1链表的概念及结构概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。结构:注意:从上图可看出,链式结构在逻辑上是连续的,但是在物理上不一定连续现实中的结......
  • 环形链表 II(快慢指针)
    给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从0开始)。如果......
  • C语言链表通关文牒
    今天我们来看另一道链表的题目:本关任务:请编写一个程序,其功能为根据输入的一组整数(用-1表示结束),创新一个有序链表,即对于任意的输入顺序,链表中的每个节点内容按照非递减有序排列。假设链表的节点结构体定义如下。typedefstructnode{ intnum; structnode*next;}NODE......
  • 环形链表(快慢指针)
    给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从0开始)。注意:pos 不作为参数进行传递 。仅仅是为了标......
  • 回文链表
    给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。示例1:输入:head=[1,2,2,1]输出:true示例2:输入:head=[1,2]输出:false 思路:使用栈来存储节点值,然后开始比对/***Definitionforsingly-linkedlist.*str......
  • 数据结构-链表-代码
    单链表-每个节点需要存储下一节点的地址不要求大片连续的空间,改变容量方便+但是不能随机存储,要耗费一定空间存放指针不带头结点带头结点-更方便——所以一般采用带头结点的方式带头结点#include<stdlib.h>#include<iostream>usingnamespacestd;typedefint......
  • 相交链表
    给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保持其原始结构 。 /***......
  • 数据结构漫游记:静态链表的实现(CPP)
    嘿,各位技术潮人!好久不见甚是想念。生活就像一场奇妙冒险,而编程就是那把超酷的万能钥匙。此刻,阳光洒在键盘上,灵感在指尖跳跃,让我们抛开一切束缚,给平淡日子加点料,注入满满的passion。准备好和我一起冲进代码的奇幻宇宙了吗?Let'sgo!我的博客:yuanManGan我的专栏:C++入门小馆 C......