编写函数,将一个链表变成有序的
时间: 2024-09-19 20:01:21 浏览: 40
编写一个函数将链表变成有序的,通常我们会选择排序算法来处理这个任务。这里以常见的插入排序为例,因为插入排序对于小规模或者部分有序的链表效率较高。在Python中,我们可以这样做:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def insertion_sort_list(head):
if not head or not head.next:
return head
# 将头节点暂时存储,初始化新链表
dummy = ListNode(0)
dummy.next = head
prev = dummy
while head and head.next:
# 插入当前节点到已排序的部分
current = head
while prev.next and prev.next.val < current.val:
prev = prev.next
# 移动节点
temp = current.next
current.next = temp.next
temp.next = prev.next
prev.next = current
return dummy.next
```
这个函数会遍历链表,对每个节点进行插入操作,使其按照升序排列。`dummy`节点用于辅助操作,避免频繁修改原链表指针。
阅读全文