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

链表相关——Python实现

一、链表的创建及数据插入

示例代码:

#1.定义一个结点类
class ListNode():def __init__(self,x,next=None):self.val=xself.next=next
#2.定义单链表
class LinkList():#2.1 创建一个头指针为空的链表def __init__(self,head=None):self.head=None#2.2 将数据插入链表(最后返回链表的头指针)def initList(self,data):#2.3 创建头结点self.head=ListNode(data[0])r=self.headp=self.head#2.4 逐个为data内的数据创建结点,建立链表for i in data[1:]:node=ListNode(i)p.next=nodep=p.nextreturn rdef printList(self,head):if not head:return []node=headwhile node:print(node.val,end='\t')node=node.nextprint()if __name__ == '__main__':l=LinkList()tup1=(1,2,3,4,5)lst1=[6,7,8,9,10]l1=l.initList(tup1)l2=l.initList(lst1)l.printList(l1)l.printList(l2)

运行结果:

二、链表反转

#集合添加元素
# s={1,2,3}  1->2->3  3->2->1
# s.add(4)
# print(s)
class ListNode():def __init__(self,x):self.val=xself.next=None
class Solution():def ReverseList(self,head:ListNode)->ListNode:#处理空链表if not head:return Nonecur=headpre=Nonewhile cur:#断开链表,要记录后续一个temp=cur.next#当前的next指向前一个cur.next=prepre=curcur=tempreturn pre

三、合并两个有序链表

# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param pHead1 ListNode类 
# @param pHead2 ListNode类 
# @return ListNode类
#
class Solution:def Merge(self , pHead1: ListNode, pHead2: ListNode) -> ListNode:# write code herecur0=cur=ListNode(12)while pHead1 and pHead2:if pHead1.val<pHead2.val:cur.next=pHead1pHead1=pHead1.nextcur=cur.nextelse:cur.next=pHead2pHead2=pHead2.nextcur=cur.nextcur.next=pHead1 or pHead2return cur0.next

http://www.xdnf.cn/news/2634.html

相关文章:

  • 【Rust通用集合类型】Rust向量Vector、String、HashMap原理解析与应用实战
  • 使用 MQTT - C 访问 IoTDA 平台:一个完整的嵌入式示例
  • Java面试场景深度解析
  • 排序--数据结构初阶(4)(C/C++)
  • QT开发技术【qcustomplot 曲线与鼠标十字功能】
  • 【C++ Qt】快速上手 显⽰类控件(Label、LCDNumber、ProcessBar、CalendarWidget)
  • Java项目技术栈使用场景深度解析
  • el-Input输入数字自动转千分位进行展示
  • Golang|外观模式和具体逻辑
  • 前端:纯HTML、CSS和JS菜单样式
  • 如何免费把PPT的页面输出为透明的图片-快速制作图新说汇报内容
  • 【Java开发日记】OpenFeign 的 9 个坑
  • 【wpf】 WPF中实现动态加载图片浏览器(边滚动边加载)
  • GCC 15.1 发布,包含 COBOL 编译器及多项其他改进
  • FastAPI中使用Pydantic进行数据验证的示例与关键技术点分析
  • java Optional
  • 【vLLM 学习】CPU 离线处理
  • 通俗易懂一文讲透什么是 MCP?
  • 坐标转换:从WGS-84到国内坐标系(GCJ-02BD-09)
  • 大语言模型 - 运行、微调的显存计算详解与优化 全量微调、LoRA 优化策略
  • windows安装docker教程
  • PTA -L1-005 考试座位号(BufferedReader、Arraylist动态数组、Map)
  • 记录一下从debian12升级到debian13出现的小插曲01
  • C++翻转数相乘 2024年信息素养大赛复赛 C++小学/初中组 算法创意实践挑战赛 真题详细解析
  • shell编程基础知识及脚本示例
  • Android源码编译命令详解
  • 基于 Amazon RDS 数据库之间复制数据并屏蔽个人身份信息
  • 写读后感的时候,可以适当地引用书中的内容吗?
  • 【JavaGUI】
  • 边缘函数:全栈开发的最后1毫秒性能革命