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

单链表合成(去重复值)

将两个递增有序的单链表合并成一个递增有序的单链表,要求利用原表空间(注意重复值只保留一个)。输出合并后的单链表。设数据结点的值域为整型

输入格式:

输入n个有序的整数(无重复值),以0做结束,分别创建单链表A和B;

输出格式:

输出合并后的单链表,数据之间用一个空格分隔。

输入样例:

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

4 6 8 10 0
1 2 3 4 5 6 7 0

输出样例:

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

1 2 3 4 5 6 7 8 10

# 定义链表节点类
class Node:def __init__(self, data=None):self.data = dataself.next = None# 定义单向链表类
class LinkedList:def __init__(self):self.head = Node()  # 初始化带头结点# 向链表添加节点def append(self, data):new_node = Node(data)cur = self.headwhile cur.next:  # 找到链表的尾部cur = cur.nextcur.next = new_node# 打印链表的所有元素def display(self):cur = self.head.next  # 跳过头结点while cur:print(cur.data, end=" ")cur = cur.nextprint()# 合并两个有序链表@staticmethoddef merge(linked_list_a, linked_list_b):# 创建一个新链表merged_list = LinkedList()cur_a = linked_list_a.head.next  # 跳过头结点cur_b = linked_list_b.head.next  # 跳过头结点last_added = None  # 用于跟踪上一个添加的节点值,以避免重复while cur_a and cur_b:if cur_a.data < cur_b.data:  # A 的节点更小if last_added is None or cur_a.data != last_added:merged_list.append(cur_a.data)last_added = cur_a.datacur_a = cur_a.nextelif cur_a.data > cur_b.data:  # B 的节点更小if last_added is None or cur_b.data != last_added:merged_list.append(cur_b.data)last_added = cur_b.datacur_b = cur_b.nextelse:  # cur_a.data == cur_b.data,两个节点相等if last_added is None or cur_a.data != last_added:merged_list.append(cur_a.data)last_added = cur_a.datacur_a = cur_a.nextcur_b = cur_b.next# 添加剩余节点while cur_a:if last_added is None or cur_a.data != last_added:merged_list.append(cur_a.data)last_added = cur_a.datacur_a = cur_a.nextwhile cur_b:if last_added is None or cur_b.data != last_added:merged_list.append(cur_b.data)last_added = cur_b.datacur_b = cur_b.nextreturn merged_list# 主程序
def main():# 创建第一个链表linked_list_a = LinkedList()input_a = input().split()for num in input_a:num = int(num)if num == 0:breaklinked_list_a.append(num)# 创建第二个链表linked_list_b = LinkedList()input_b = input().split()for num in input_b:num = int(num)if num == 0:breaklinked_list_b.append(num)# 合并两个链表merged_list = LinkedList.merge(linked_list_a, linked_list_b)# 输出合并后的链表merged_list.display()# 调用主程序
main()

http://www.mrgr.cn/news/44352.html

相关文章:

  • 【PostgreSQL】运维篇——性能优化的重要性与背景
  • 【题解】—— LeetCode一周小结40
  • Codeforces Round 977 (Div. 2, based on COMPFEST 16 - Final Round) (A-E3)
  • 谷歌发布了日语版的 Gemma2 模型——gemma-2-2b-jpn-it
  • 查缺补漏----拥塞窗口
  • C语言 | Leetcode C语言题解之第460题LFU缓存
  • <<迷雾>> 第8章 学生时代的走马灯(3)--走马灯 示例电路
  • [C++]使用纯opencv部署yolov11-cls图像分类onnx模型
  • Python 字符串基础知识
  • 讯飞星火编排创建智能体学习(六):使用轻量级Action查询家里的灯开了没有
  • 【C语言】预处理指令详解
  • [C++][第三方库][ODB]详细讲解
  • 解锁空间距离计算的多种方式-含前端、空间数据库、后端
  • 高级java每日一道面试题-2024年10月5日-数据库篇[MySQL篇]-MySQL为什么InnoDB是默认引擎?
  • Golang | Leetcode Golang题解之第461题汉明距离
  • Crypto虐狗记---”你“和小鱼(九)
  • SQL专项练习第四天
  • 消费者Rebalance机制
  • k8s 中存储之 PV 持久卷 与 PVC 持久卷申请
  • 通信工程学习:什么是AIOT智能物联网