多个单链表的合成

建立两个非递减有序单链表,然后合并成一个非递增有序的单链表。

注意:建立非递减有序的单链表,需要采用创建单链表的算法

输入格式:

1 9 5 7 3 0

2 8 4 6 0

输出格式:

9 8 7 6 5 4 3 2 1

输入样例:

在这里给出一组输入。例如:

2 8 4 6 3 7 0
-4 5 6 2 3 9 0

输出样例:

在这里给出相应的输出。例如:

9 8 7 6 6 5 4 3 3 2 2 -4

# 定义链表节点类
class Node:def __init__(self, data=None):self.data = dataself.next = None# 定义单向链表类
class LinkedList:def __init__(self):self.head = Node()  # 初始化头结点# 有序插入节点到非递减链表中def insert(self, data):new_node = Node(data)cur = self.head# 找到插入位置: cur.next 为第一个大于 data 的节点while cur.next and cur.next.data < data:cur = cur.nextnew_node.next = cur.nextcur.next = new_node# 合并两个非递减链表,并返回合并后的链表def merge(self, other):merged_list = LinkedList()  # 创建新的合并链表cur1 = self.head.next  # 跳过头结点cur2 = other.head.next  # 跳过头结点# 合并两个链表while cur1 and cur2:if cur1.data <= cur2.data:merged_list.insert(cur1.data)cur1 = cur1.nextelse:merged_list.insert(cur2.data)cur2 = cur2.next# 处理剩余的元素while cur1:merged_list.insert(cur1.data)cur1 = cur1.nextwhile cur2:merged_list.insert(cur2.data)cur2 = cur2.nextreturn merged_list# 反转链表def reverse(self):prev = Nonecur = self.head.next  # 跳过头结点while cur:next_node = cur.next  # 保存下一个节点cur.next = prev  # 反转指针prev = cur  # 移动 prevcur = next_node  # 移动 curself.head.next = prev  # 更新头结点的next指针# 打印链表的所有元素def display(self):cur = self.head.next  # 跳过头结点while cur:print(cur.data, end=" ")cur = cur.nextprint()# 主程序
def main():# 建立第一个链表linked_list1 = LinkedList()input1 = input().split()for num in input1:num = int(num)if num == 0:breaklinked_list1.insert(num)# 建立第二个链表linked_list2 = LinkedList()input2 = input().split()for num in input2:num = int(num)if num == 0:breaklinked_list2.insert(num)# 合并两个有序链表merged_list = linked_list1.merge(linked_list2)# 反转合并后的链表以变为非递增顺序merged_list.reverse()# 打印反转后的链表merged_list.display()# 调用主程序
main()

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

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

相关文章

鸿蒙harmonyos next纯flutter开发环境搭建

公司app是用纯flutter开发的&#xff0c;目前支持android和iOS&#xff0c;后续估计也会支持鸿蒙harmonyos。目前谷歌flutter并没有支持咱们国产手机操作系统鸿蒙harmonyos&#xff0c;于是乎国内有个叫OpenHarmony-SIG的组织&#xff0c;去做了鸿蒙harmonyos适配flutter开发的…

ROS无人机机械爪使用

引言&#xff1a;使用飞控的主通道5-8作为舵机控制输出&#xff0c;需要提前设置好飞控参数&#xff0c;否则无效。本节资料文件尚未整理完毕&#xff0c;整理完毕后会在B站进行视频讲解&#xff0c;并进行开源 1、启动mavros通信&#xff0c;用于订阅遥控器的按键信息&#x…

harbor https配置

安装docker compose curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo yum -y install docker-compose docker-compose version生成自建CA证书 生成CA私钥&#xff1a; openssl genrsa -out /path/ca/ca.key 4096生成ca的自签名证书: open…

【力扣 | SQL题 | 每日四题】力扣1783,1757,1747,1623,1468,1661

昨天晚上睡着了&#xff0c;今天把昨天的每日一题给补上。 1. 力扣1783&#xff1a;大满贯数量 1.1 题目&#xff1a; 表&#xff1a;Players ------------------------- | Column Name | Type | ------------------------- | player_id | int | | player_na…

【AI知识点】词嵌入(Word Embedding)

词嵌入&#xff08;Word Embedding&#xff09;是自然语言处理&#xff08;NLP&#xff09;中的一种技术&#xff0c;用于将词语或短语映射为具有固定维度的实数向量。这些向量&#xff08;嵌入向量&#xff09;能够捕捉词语之间的语义相似性&#xff0c;即将语义相近的词映射到…

oracle 新建用户,用户插入数据报错:ORA-01950: 对表空间 ‘USERS‘ 无权限

oracle 新建用户&#xff0c;用户插入数据报错:ORA-01950: 对表空间 ‘USERS’ 无权限 根据业务需求创建了一个新的表空间和一个新的用户&#xff0c;当用这个新用户创建表时&#xff0c;报错&#xff1a;ORA-01950: 表空 间’USERS’中无权限。我已经把创建表的权限赋给了此用…

使用SpringBoot自定义注解+拦截器+token机制,实现接口的幂等性

1 整合springboot和redis环境的集成2 配置请求的方法体和枚举类 import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;Data AllArgsConstructor NoArgsConstructor public class Response {private int status;private String msg;privat…

LeetCode hot100---链表专题(C++语言)

1、相交链表 &#xff08;1&#xff09;题目描述以及输入输出 (1)题目描述: 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交点&#xff0c;返回 null 。 (2)输入输出描述&#xff1a; 输入&#xff1a;…

【游戏模组】重返德军总部2009高清重置MOD,建模和材质全部重置,并且支持光追效果,游戏画质大提升

各位好&#xff0c;今天小编给大家带来一款新的高清重置MOD&#xff0c;本次高清重置的游戏叫《重返德军总部2009》2009年发布&#xff0c;我相信很多玩家已经玩过了&#xff0c;如果你还没有玩过我也可以和你简单介绍一下剧情&#xff0c;这款游戏故事背景接续在《重返德军总部…

【Python】Dejavu:Python 音频指纹识别库详解

Dejavu 是一个基于 Python 实现的开源音频指纹识别库&#xff0c;主要用于音频文件的识别和匹配。它通过生成音频文件的唯一“指纹”并将其存储在数据库中&#xff0c;来实现音频的快速匹配。Dejavu 的主要应用场景包括识别音乐、歌曲匹配、版权管理等。 ⭕️宇宙起点 &#x1…

golang web笔记-3.响应ResponseWriter

简介 从服务器向客户端返回响应需要使用 ResponseWriter&#xff0c;ResponseWriter是一个接口&#xff0c;handler用它来返回响应。 ResponseWriter常用方法 Write&#xff1a;接收一个byte切片作为参数&#xff0c;然后把它写入到响应的body中。如果Write被调用时&a…

828华为云征文|部署在线论坛网站 Flarum

828华为云征文&#xff5c;部署在线论坛网站 Flarum 一、Flexus云服务器X实例介绍二、Flexus云服务器X实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置2.4 Docker 环境搭建 三、Flexus云服务器X实例部署 Flarum3.1 Flarum 介绍3.2 Flarum 部署3.3 Flarum 使用 四、总结 一、…

【GeekBand】C++设计模式笔记5_Observer_观察者模式

1. “组件协作”模式 现代软件专业分工之后的第一个结果是“框架与应用程序的划分”&#xff0c;“组件协作”模式通过晚期绑定&#xff0c;来实现框架与应用程序之间的松耦合&#xff0c;是二者之间协作时常用的模式。典型模式 Template MethodStrategyObserver / Event 2.…

【Linux】第一个小程序——进度条实现

&#x1f525; 个人主页&#xff1a;大耳朵土土垚 &#x1f525; 所属专栏&#xff1a;Linux系统编程 这里将会不定期更新有关Linux的内容&#xff0c;欢迎大家点赞&#xff0c;收藏&#xff0c;评论&#x1f973;&#x1f973;&#x1f389;&#x1f389;&#x1f389; 文章目…

【Linux进程间通信】Linux匿名管道详解:构建进程间通信的隐形桥梁

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;Linux “ 登神长阶 ” &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀Linux进程间通信 &#x1f4d2;1. 进程间通信介绍&#x1f4da;2. 什么是管道&#x1f4dc;3…

08.useInterval

在 React 应用中,实现定时器功能通常需要使用 setInterval() 和 clearInterval(),这可能会导致代码复杂和难以维护。useInterval 钩子提供了一种声明式的方法来实现定时器功能,使得定时器的管理更加简单和直观。这个自定义钩子不仅简化了定时器的使用,还解决了一些常见的定…

Java - MyBatis(上)

Mybatis&#xff08;上&#xff09; 简介 Mybatis是一款优秀的持久层框架。 Mybatis支持定制化SQL、存储过程以及高级映射。 MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。 持久化 持久化就是将程序的数据在持久状态和瞬时状态转化的过程 内存因为断电即失…

传感器模块编程实践(三)舵机+超声波模块融合DIY智能垃圾桶模型

文章目录 一.概要二.实验模型原理1.硬件连接原理框图2.控制原理 三.实验模型控制流程四.智能感应垃圾桶模型程序五.实验效果视频六.小结 一.概要 随着科技的飞速发展和环保意识的日益增强&#xff0c;智能垃圾桶成为了城市生活的新宠&#xff0c;智能垃圾桶人们无需接触垃圾桶…

灵足时代:具身智能核心部件的新秀崛起——解析数千万元天使轮融资

在智能科技日新月异的今天,具身智能作为连接物理世界与数字世界的重要桥梁,正逐步成为科技创新的前沿阵地。近日,具身智能核心部件领域的新锐公司——“灵足时代”宣布完成数千万元天使轮融资,这一消息无疑为行业内外带来了强烈的震撼与期待。本轮融资由雅瑞智友科学家基金…

计算机组成原理(笔记6阵列乘法器、补码阵列乘法器)

手算阵列乘法器 平时我们计算乘法的时候是手算的 平时手算过程中我们是进行平行移位&#xff0c;可是在计算机里平行移位&#xff0c;会带来更大的开销&#xff0c;如下图我们可以看到&#xff0c;为此聪明的人&#xff0c;设计了斜移位的计算机 值得注意的是最后一行用的是平…