链表的基本知识、递归方法的基本思路

链表是一种数据结构,由一系列节点组成,每个节点包含一个数据部分和一个指向下一个节点的指针。链表的基本特点包括:

  1. 节点:链表的基本单元,通常包含两个部分:

    • 数据域(value/val):存储数据。
    • 指针域(next/prev):指向下一个节点(单链表)或上一个节点和下一个节点(双链表)。
  2. 头节点:链表的起始节点。可以为 None,表示链表为空。

  3. 尾节点:链表的最后一个节点,通常它的 next 指针为 None

  4. 空链表:链表的头节点为 None,表示链表中没有任何节点。

  5. 链表的类型

    • 单链表:每个节点只包含一个指向下一个节点的指针。
    • 双链表:每个节点包含两个指针,分别指向下一个节点和前一个节点。

      递归方法的基本思路

      递归是一种在函数中调用自身的编程技术,用于解决可以分解为更小的相同问题的任务。递归的基本思路包括:

    • 基本情况:确定递归的终止条件。基本情况是最简单的情况,不再递归,直接返回结果。

    • 递归情况:将问题分解为更小的相同问题,并调用递归函数来解决这些子问题。通常需要在递归调用前处理一些必要的操作。

两两交换链表中的节点

创建一个虚拟头节点 dummy,其 next 指向链表的头节点。这样可以处理链表的头部交换问题。
循环遍历链表: 使用 current 指针来遍历链表。每次交换 current.next 和 current.next.next 两个节点。
节点交换:将 first 节点的 next 指向 second 节点的下一个节点。
将 second 节点的 next 指向 first 节点。
将 current.next 更新为 second 节点。
移动到下一个待处理节点: 更新 current 为 first 节点(交换后的第二个节点),继续处理后续节点。
返回结果: 返回 dummy.next 作为新链表的头节点。 

设计链表

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值