python链表_递归求和_递归求最大小值

创建一个单链表:

class LinkNode:             #设置属性def __init__(self,data = None):self.data = dataself.next = None
class LinkList:             #设置头结点def __init__(self):self.head = LinkNode()self.head.next = Nonedef CreateListR(self,a):            #尾插法t = self.headfor i in range(len(a)):s = LinkNode(a[i])          #建立节点t.next = st = st.next = None                   #让尾结点变为空值
a = LinkList()
a.CreateListR([3,2,6,7,1])          #创建另一个单链表
b = LinkList()                  #
b.CreateListR([3,2,1])          #创建一个单链表

创建一个双链表:

class DlinkNode:def __init__(self,data = None):self.data = dataself.next = Noneself.prior = None
class Dlinklist:def __init__(self):self.dhead = DlinkNode()self.dhead.next = Noneself.dhead.prior = Nonedef CreatelistR(self,a):              #尾插法t = self.dheadfor i in range(len(a)):s = DlinkNode(a[i])t.next = ss.prior = tt = st.next = Nonedef getsize(self):                  #返回链表长度p = self.dheadcnt = 0while p.next != None:cnt+=1p = p.nextreturn cntdef geti(self,i):                   #返回序号为i的元素p = self.dheadj = -1while j<i and p.next!=None:j+=1p = p.nextreturn p
a = Dlinklist()
a.CreatelistR([1,2,3,4,5,6,9])

两个单链表递归求和:

def Sum(m):               #两个单链表求和if m==None:      #如果两个单链表尾节点的下一节点为空就返回0return 0else:return m.data+Sum(m.next)
p = Sum(a.head.next)
m = Sum(b.head.next)
print(p+m)

双链表用递归从中间求和:

def Sum(p,x):                     #双链表用递归从中间求和if p==None or x ==None:return 0else:return p.data+Sum(p.next,x.prior)+x.data    #p指针向后移动,x指针向前移动
size = a.getsize()              #获取整体长度if size%2==0:minddle = size//2               #找到中间序号it = a.geti(minddle)            #找到中间节点o = Sum(it,it.prior)            #注意传后面的it是要向前移一个print(o)
if size%2==1:minddle = size//2it = a.geti(minddle)o = Sum(it.next,it.prior)+it.dataprint(o)

用递归求链表的最小值:

def Min(p):                 #用递归求链表的最小值if p.next==None:        #只有一个就直接返回return p.datamin = Min(p.next)       #设为初始最小值if min<p.data:return min          #p向下移动else:return p.data       #返回最小值
a = Min(a.head.next)
print(a)

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/180286.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

EMNLP 2023 | DeepMind提出大模型In-Context Learning的可解释理论框架

论文题目&#xff1a;In-Context Learning Creates Task Vectors 论文链接&#xff1a;https://arxiv.org/abs/2310.15916 01. 引言 此外&#xff0c;作者也提到本文的方法与软提示&#xff08;soft-prompt&#xff09;[1]方法类似&#xff0c;soft-prompt也是通过调整大模型内…

sqli-labs(Less-5) updatexml闯关

updatexml() - Xpath类型函数 1. 确定注入点闭合方式 确认为字符型注入 2. 爆出当前数据库的库名 http://127.0.0.1/sqlilabs/Less-5/?id1 and updatexml(~,concat(~,(select database())),~) --3. 爆出当前用户名 http://127.0.0.1/sqlilabs/Less-5/?id1 and updatexml…

嵌入式linux--sysfs文件系统以及操作GPIO

sysfs文件系统 在Linux系统中&#xff0c;/sys路径是一个特殊的虚拟文件系统&#xff08;Virtual File System&#xff09;&#xff0c;用于提供对内核和设备的运行时信息的访问。它是sysfs文件系统的挂载点&#xff0c;提供了一种以文件和目录形式表示系统设备、总线、驱动程…

SpringBoot--中间件技术-4:整合Shiro,Shiro基于会话SessionManager实现分布式认证,附案例含源代码!

SpringBoot整合安全中间件Shiro 技术栈&#xff1a;SpringBootShiro 代码实现 pom文件加坐标 Springboot版本选择2.7.14 &#xff1b;java版本1.8 &#xff1b; shiro做了版本锁定 1.3.2 <properties><java.version>1.8</java.version><!--shiro版本锁定…

k8s资源管理操作——陈述式管理方式

目录 陈述式资源管理方式 1、常用的kubernetes管理命令 1&#xff09;查看版本信息 2&#xff09;查看资源对象简写 3&#xff09;查看集群信息 4&#xff09;配置kubectl自动补全 5&#xff09;node节点查看日志 2、资源管理命令 1&#xff09;创建资源 2&#xff0…

docker 部署日志平台出错汇总

第一次运行elasticsearch:8.11.1镜像&#xff0c;报错如下&#xff1a; [rootmaster ~]# docker run --name es03 --net elastic -p 9200:9200 -it -m 1GB docker.elastic.co/elasticsearch/elasticsearch:8.11.1 docker: Error response from daemon: driver failed programmi…

SystemVerilog学习 (5)——接口

一、概述 验证一个设计需要经过几个步骤&#xff1a; 生成输入激励捕获输出响应决定对错和衡量进度 但是&#xff0c;我们首先需要一个合适的测试平台&#xff0c;并将它连接到设计上。 测试平台包裹着设计,发送激励并且捕获设计的输出。测试平台组成了设计周围的“真实世界”,…

ExoPlayer架构详解与源码分析(8)——Loader

系列文章目录 ExoPlayer架构详解与源码分析&#xff08;1&#xff09;——前言 ExoPlayer架构详解与源码分析&#xff08;2&#xff09;——Player ExoPlayer架构详解与源码分析&#xff08;3&#xff09;——Timeline ExoPlayer架构详解与源码分析&#xff08;4&#xff09;—…

嵌入式养成计划-53----ARM--串口通信

一百三十四、串口通信 134.1 串口的概念 串口&#xff08;UART&#xff09;&#xff1a;Universal asynchronous receiver transmitter (USART/UART)&#xff0c;通用异步接收发送器通过串口可以实现两个不同机器之间的信息交互串口通信属于总线通信的一种 134.2 总线的概念…

服务名无效。 请键入 NET HELPMSG 2185以获得更多的帮助

遇到的问题是MySQL服务没有。 因为net start 服务名&#xff0c;启动的是win下注册的服务。此时&#xff0c;我系统中并没有注册mysql到服务中。即下面没有mysql服务。 mysqld --install net start mysql

OpenCV入门2——图像视频的加载与展示一些API

文章目录 题目OpenCV创建显示窗口OpenCV加载显示图片题目 OpenCV保存文件利用OpenCV从摄像头采集视频从多媒体文件中读取视频帧将视频数据录制成多媒体文件OpenCV控制鼠标关于[np.uint8](https://stackoverflow.com/questions/68387192/what-is-np-uint8) OpenCV中的TrackBar控…

Python---数据序列中的公共方法

公共方法就是 支持大部分 数据 序列。 常见公共方法---简单 运算符描述支持的容器类型合并字符串、列表、元组*复制字符串、列表、元组in元素是否存在字符串、列表、元组、字典not in元素是否不存在字符串、列表、元组、字典 案例&#xff1a; 合并 代码&#xff1a; # …