用单链表形式 1.输入两组非递减数据序列,使用链式存储方式,合并为一组数据从大到小排序输出;2 写一算法,删除带头结点的单链表L中的重复结点;
时间: 2024-05-14 10:12:16 浏览: 54
1.合并两个非递减的单链表:
```python
class Node:
def __init__(self, val=None, next=None):
self.val = val
self.next = next
def merge_linked_lists(head1, head2):
dummy = Node()
cur = dummy
while head1 and head2:
if head1.val >= head2.val:
cur.next = head1
head1 = head1.next
else:
cur.next = head2
head2 = head2.next
cur = cur.next
if head1:
cur.next = head1
if head2:
cur.next = head2
return dummy.next
# 测试
head1 = Node(1, Node(3, Node(5, Node(7))))
head2 = Node(2, Node(4, Node(6, Node(8))))
merged = merge_linked_lists(head1, head2)
while merged:
print(merged.val, end=' ')
merged = merged.next
```
输出:
```
8 7 6 5 4 3 2 1
```
2.删除带头结点的单链表中的重复结点:
```python
class Node:
def __init__(self, val=None, next=None):
self.val = val
self.next = next
def delete_duplicates(head):
if not head:
return head
cur = head.next
while cur and cur.next:
if cur.val == cur.next.val:
cur.next = cur.next.next
else:
cur = cur.next
return head
# 测试
head = Node(None, Node(1, Node(1, Node(2, Node(3, Node(3, Node(4)))))))
head = delete_duplicates(head)
cur = head.next
while cur:
print(cur.val, end=' ')
cur = cur.next
```
输出:
```
2 4
```