7-4 两个有序链表合并(新表不含重复元素) 分数 25 作者 陈晓梅 单位 广东外语外贸大学 已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3。 要求S3中没有重复元素。
时间: 2024-03-16 12:31:50 浏览: 157
可以使用双指针法,从两个非降序链表的头部开始遍历,比较两个指针所指向的节点的值的大小,将较小的值插入到新的链表S3中,并将相应的指针向后移动一位,重复这个过程直到遍历完两条链表中的所有节点。若两个指针所指向的节点的值相同,则只将其中一个节点插入到新的链表S3中。最后返回合并后的新的非降序链表S3即可。
相关问题
7-4 两个有序链表合并(新表不含重复元素) (25 分)
题意:求7-4两个有序链表合并(新表不含重复元素)
解答:可以使用归并排序的思想,从两个链表的头节点依次比较大小,将小的节点加入新链表中。需要注意的是,如果两个链表中有相同的元素,则只需要将其中一个链表中的该元素加入新链表即可。最后返回新链表即可。
7-1 两个有序链表序列的合并 分数 50 作者 DS课程组 单位 浙江大学
两个有序链表序列的合并是指将两个有序链表按照元素大小的顺序合并成一个新的有序链表。具体的合并过程如下:
1. 创建一个新的链表,用于存储合并后的结果。
2. 初始化两个指针,分别指向两个有序链表的头节点。
3. 比较两个指针所指节点的值,将较小的节点添加到新链表中,并将对应链表的指针后移一位。
4. 重复步骤3,直到其中一个链表遍历完毕。
5. 将剩余未遍历完的链表直接连接到新链表的末尾。
6. 返回新链表作为合并后的结果。
以下是一个示例代码实现:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def mergeTwoLists(l1, l2):
dummy = ListNode(0) # 创建一个虚拟头节点
curr = dummy # 当前节点指针
while l1 and l2:
if l1.val <= l2.val:
curr.next = l1
l1 = l1.next
else:
curr.next = l2
l2 = l2.next
curr = curr.next
# 将剩余未遍历完的链表直接连接到新链表的末尾
if l1:
curr.next = l1
if l2:
curr.next = l2
return dummy.next # 返回合并后的链表的头节点
```
阅读全文