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

两两交换链表中的节点

时间:2023-11-18 22:35:31浏览次数:32  
标签:head ListNode nullptr 交换 next 链表 节点

现在时间是:   2023年11月18日 星期六    农历十月初六   22:08:
每天坚持刷Leetcode,遇到有些突然看到就不能想得很清楚的题目,还是需要进行记录一下!

Leetcode热题100(学习计划):两两交换链表中的节点,题目信息如下:
  给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

题目信息如上:
我的想法是,本道题目打直球,没有什么算法思维,就是需要控制好边界条件,以及创立一些节点:

 

在设计算法思路的时候,主要就是设定好相关的begin和end节点即可,代码展示如下:

/**
 * 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) return nullptr;
        //不修改节点内部的值,即交换两个节点
        ListNode* node = new ListNode(0);
        node->next = head;
        ListNode* s = node;
        while(head != nullptr && head->next != nullptr){
            //交换节点
            ListNode* cur = head->next->next;
            ListNode* pre = head->next;
            pre->next = head;
            head->next = cur;
            s->next = pre;
            s = head;
            head = head->next;
        }
        
        return node->next;
    }
};

 

标签:head,ListNode,nullptr,交换,next,链表,节点
From: https://www.cnblogs.com/yysnff/p/17841241.html

相关文章

  • 206. 反转链表 (精选)
    2023-11-18206.反转链表-力扣(LeetCode)思路:注意leetcode是没有头节点的,只有数据节点1先将指针放到最后,然后从开头取节点,放到此节点后面遍历2遍,不好2引入头节点,头插法可以就用本来的链表/定义一个新的链表3原地反转链表的线迭代(双指针)递归相当于1的思路1简单,就......
  • 【HDU 1276】士兵队列训练问题 题解(链表+模拟)
    某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报到三的出列,剩下的向小序号方向靠拢,继续从头开始进行一至二报数。。。,以后从头开始轮流进行一至二报数、一至......
  • HCIA-交换机VLAN
    前言随着网络中计算机的数量越来越多,传统的以太网络开始面临广播泛滥以及安全性无法保障等各种问题。因此Vlan(VirtualLocalAreaNetwork虚拟局域网)技术开始普及使用Vlan是将一个物理的局域网在逻辑上划分成多个广播域的技术;通过在交换机上配置Vlan,可以实现在同一个Vlan内......
  • (链表)16-删除有序链表中重复的元素-b
    1importjava.util.*;23/*4*publicclassListNode{5*intval;6*ListNodenext=null;7*publicListNode(intval){8*this.val=val;9*}10*}11*/12publicclassSolution{13/**14*@paramhead......
  • (链表)10-相交链表
    1/*2publicclassListNode{3intval;4ListNodenext=null;56ListNode(intval){7this.val=val;8}9}*/10publicclassSolution{11publicListNodeFindFirstCommonNode(ListNodepHead1,ListNodepHead2)......
  • (链表)15-删除有序链表中的重复元素-a
    1importjava.util.*;23/*4*publicclassListNode{5*intval;6*ListNodenext=null;7*publicListNode(intval){8*this.val=val;9*}10*}11*/12publicclassSolution{13/**14*@paramhead......
  • 双向循环链表应用
    已知p指向双向循环链表中的一个结点,其结点结构为data、prior、next三个域,实现交换p所指向的结点和它的前缀结点的顺序。#include<iostream>#include<cstring>usingnamespacestd;typedefstructf{intdata;f*next;f*pre;}node,*Node;voidbuild(Nodep){int......
  • 链表逆置
     structListNode*reverse(structListNode*head){if(head==NULL||head->next==NULL){returnhead;}structListNode*p=NULL,*t,*pp=head;while(pp){t=pp->next;pp->next=p;p=pp;pp=t;}......
  • (链表)14-链表的奇偶重排
    1importjava.util.*;23/*4*publicclassListNode{5*intval;6*ListNodenext=null;7*publicListNode(intval){8*this.val=val;9*}10*}11*/12publicclassSolution{13/**14*代码中的类名......
  • 多表查询(跨表查询) 子查询 链表查询 正反向查询概念 聚合查询 分组查询 F查询和Q查询
    昨日内容回顾模板之变量所有的数据类型都可以在模板中使用render(request,'index.html',context={''})render(request,'index.html',context=locals())"""在模板中使用变量的时候,用的是字典的key值,key值value值一般保持一致"""模板之过滤器类似于函数,函数才可以传递参......