当前位置: 首页 > news >正文

[链表]两两交换链表中的节点

两两交换链表中的节点

注意,这里是交换链表的物理节点。而不是交换它的数值。如果链表的节点个数为奇数,则最后一个节点不需要处理。

让我们在操作三四两个节点的时候,要将指针指向三的前一个节点。

首先定义一个虚拟头节点。虚拟头节点的next指向真正的头节点。
dummyhead->next = head
cur = dummyhead
cur先指向dummyhead才能操作头节点和下一个节点。接下来就是一个遍历的过程。当这个链表的节点数量为偶数的时候,cur.next空结束循环;当链表节点为奇数的时候,cur.next.next空结束循环.while(cur->next != null && cur->next->next != null )  {如果把这两个条件反过来,容易发生空指针异常。因为先写后一个条件时,cur->next可能为空。cur指向dummyhead,是我们新new的一个节点,不可能为空dummyhead指向2,2指向1,1指向3我们在将dummyhead指向节点二之前。要将节点一的指针保存,否则没有办法表示节点1。也没有办法对节   点1进行操作;同时在我们进行节点二的赋值操作之前,对节点三也要进行保存否则,节点三也没有办法表示temp = cur->next   保存了节点1temp1 = cur->next->next->next   保存了节点3cur->next = cur->next->nextcur->next->next = temp temp->next = temp1 接下来我们要移动cur指针cur = cur->next->nextreturn dummyhead->next

python代码

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:def swapPairs(self, head: Optional[ListNode]) -> Optional[ListNode]:dummyhead =  ListNode()dummyhead.next = headcur = dummyheadwhile cur.next and cur.next.next :temp = cur.next# 1temp1 = cur.next.next.next# 3cur.next = cur.next.next# dummy-2cur.next.next = temp# 2-1temp.next =  temp1# 1-3cur = cur.next.next# cur->1return dummyhead.next

http://www.dtcms.com/a/320392.html

相关文章:

  • 【感知机】感知机(perceptron)学习算法的对偶形式
  • aurora rx没有ready信号
  • 哈希表——指针数组与单向链表的结合
  • linux顽固进程查看并清理
  • Java包装类详解与应用指南
  • SupChains技术团队:需求预测中减少使用分层次预测(五)
  • 目标检测数据集 - 眼睛瞳孔检测数据集下载「包含COCO、YOLO两种格式」
  • 菜鸟笔记007 [...c(e), ...d(i)]数组的新用法
  • (数据结构)顺序表实现-增删查改
  • java中override和overload的区别
  • 敏捷总结-上
  • 如果获取Docker镜像
  • Flink与Kafka核心源码详解-目录
  • 中国北极圈战略部署
  • 有密钥保护的物流跟踪、图书馆管理ISO15693标签ICODE SLIX2读写C#源码
  • 跨学科视域下的深层语义分析与人类底层逻辑一致性探索
  • 计数组合学7.15(Schur 函数的经典定义 )
  • 多模态融合(Multimodal Fusion)
  • 神策埋点是什么
  • C语言:单链表学习
  • 城市道路场景下漏检率↓76%:陌讯多模态融合算法在井盖缺失识别中的实践
  • Nestjs框架: 管道机制(Pipe)从校验到转换的全流程解析
  • ROS Launch 文件中的替换参数详解
  • 1.电动汽车动力电池系统技术介绍与分类
  • 在线文档自动化工具有什么
  • 周志华院士西瓜书实战(三)聚类+邻居+PCA+特征选择+半监督学习
  • 【Canvas与徽章】北极星蓝盘玻璃光徽章
  • NumPy库向量的常见运算
  • C++面试9——多继承陷阱与适用场景
  • 【新闻资讯】Anthropic CEO 达里奥·阿莫迪万字访谈:在技术加速与风险防控间的坚守