返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++怎么实现成对交换节点
  • 398
分享到

C++怎么实现成对交换节点

2023-06-20 15:06:26 398人浏览 薄情痞子
摘要

本篇内容主要讲解“c++怎么实现成对交换节点”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++怎么实现成对交换节点”吧!Swap nodes in Pairs 成对交换节点Given a&nb

本篇内容主要讲解“c++怎么实现成对交换节点”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++怎么实现成对交换节点”吧!

Swap nodes in Pairs 成对交换节点

Given a linked list, swap every two adjacent nodes and return its head.

You may not modify the values in the list's nodes, only nodes itself may be changed.

Example:

Given

1->2->3->4

, you should return the list as

2->1->4->3.

这道题不算难,是基本的链表操作题,我们可以分别用递归和迭代来实现。对于迭代实现,还是需要建立 dummy 节点,注意在连接节点的时候,最好画个图,以免把自己搞晕了,参见代码如下:

解法一:

class Solution {public:    ListNode* swapPairs(ListNode* head) {        ListNode *dummy = new ListNode(-1), *pre = dummy;        dummy->next = head;        while (pre->next && pre->next->next) {            ListNode *t = pre->next->next;            pre->next->next = t->next;            t->next = pre->next;            pre->next = t;            pre = t->next;        }        return dummy->next;    }};

递归的写法就更简洁了,实际上利用了回溯的思想,递归遍历到链表末尾,然后先交换末尾两个,然后依次往前交换:

解法二:

class Solution {public:    ListNode* swapPairs(ListNode* head) {        if (!head || !head->next) return head;        ListNode *t = head->next;        head->next = swapPairs(head->next->next);        t->next = head;        return t;    }};

解法三:

class Solution {    public ListNode swapPairs(ListNode head) {        if (head == null || head.next == null) {            return head;        }        ListNode newHead = head.next;        head.next = swapPairs(newHead.next);        newHead.next = head;        return newHead;    }}

到此,相信大家对“C++怎么实现成对交换节点”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: C++怎么实现成对交换节点

本文链接: https://lsjlt.com/news/297979.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C++怎么实现成对交换节点
    本篇内容主要讲解“C++怎么实现成对交换节点”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++怎么实现成对交换节点”吧!Swap Nodes in Pairs 成对交换节点Given a&nb...
    99+
    2023-06-20
  • C++实现LeetCode(24.成对交换节点)
    [LeetCode] 24. Swap Nodes in Pairs 成对交换节点 Given a linked list, swap every two adjacent...
    99+
    2024-04-02
  • C++如何实现成对交换节点
    这篇文章主要讲解了“C++如何实现成对交换节点”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++如何实现成对交换节点”吧!Swap Nodes in Pairs 成对交换节点Given a...
    99+
    2023-06-19
  • C++怎么实现异步数据交换
    本篇内容介绍了“C++怎么实现异步数据交换”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!异步数据交换,除了阻塞函数 send() 和 rec...
    99+
    2023-07-04
  • C#怎么实现BitArray转换成int和string
    这篇“C#怎么实现BitArray转换成int和string”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#怎么实现Bit...
    99+
    2023-06-30
  • Vue.Draggable怎么实现交换位置
    这篇“Vue.Draggable怎么实现交换位置”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue.Draggable怎么...
    99+
    2023-06-29
  • jquery怎么对节点访问
    本篇内容介绍了“jquery怎么对节点访问”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • C#中怎么将字节数组转换成字符串
    C#中怎么将字节数组转换成字符串,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。C#字节数组转换成字符串如果还想从 System.String 类中找到方法进行字符串和字节数组之...
    99+
    2023-06-17
  • python赋值和交换怎么实现
    本文小编为大家详细介绍“python赋值和交换怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“python赋值和交换怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。赋值原理在赋值的右边形成一个新的元...
    99+
    2023-06-30
  • C++集体数据交换如何实现
    本文小编为大家详细介绍“C++集体数据交换如何实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++集体数据交换如何实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、说明到目前为止介绍的功能共享一对一的关...
    99+
    2023-07-04
  • Java中怎么利用双链表互相交换任意两个节点
    这篇文章给大家介绍Java中怎么利用双链表互相交换任意两个节点,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。概述:双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双...
    99+
    2023-05-30
    java
  • python字符怎么转换成字节
    可以使用encode()方法将字符串转换为字节,例如:```pythons = "Hello, World!"b = s.encod...
    99+
    2023-09-15
    python
  • C# BitArray(点矩阵)转换成int和string的方法实现
    BitArray的基础可以看菜鸟编程 BitArray 类管理一个紧凑型的位值数组,它使用布尔值来表示,其中 true 表示位是开启的(1),false 表示位是关闭的(0)。 当您...
    99+
    2024-04-02
  • CSS3中怎么实现swap交换动画
    本篇文章为大家展示了CSS3中怎么实现swap交换动画,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。首先得将HTML结构设计好,一个固定的窗口,然后一个带有黑色背景...
    99+
    2024-04-02
  • Ubuntu 中怎么实现mrtg交换分区
    这篇文章将为大家详细讲解有关Ubuntu 中怎么实现mrtg交换分区,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Ubuntu mrtg交换分区 Ubuntu mrtg切换到超级用...
    99+
    2023-06-16
  • vue怎么实现拖拽交换位置
    这篇文章主要介绍“vue怎么实现拖拽交换位置”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue怎么实现拖拽交换位置”文章能帮助大家解决问题。具体代码如下<template> ...
    99+
    2023-06-29
  • python怎么实现就地交换变量
    这篇文章主要介绍python怎么实现就地交换变量,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!就地交换变量在许多其他编程语言中,只能通过定义附加的temp(临时)变量来交换两个或多个变量的值。假设你想交换x和y:te...
    99+
    2023-06-27
  • C# PictureBox图片控件实现图片交换
    在 Windows 窗体应用程序中显示图片时要使用图片控件 ( PictureBox ),图片的设置方式与背景图片的设置方式相似。 图片控件中常用的属性如下表所示: &nb...
    99+
    2024-04-02
  • c#怎么转换成int
    c# 中将其他类型转换为 int 的方法有:显式类型转换 (convert.toint32)内置转换运算符 (int)parse 方法 (int.parse)tryparse 方法 (i...
    99+
    2024-05-12
    c# 字符串解析 overflow
  • C#如何实现局域网点对点
    这篇文章主要介绍“C#如何实现局域网点对点”,在日常操作中,相信很多人在C#如何实现局域网点对点问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#如何实现局域网点对点”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作