Python 链表排序:基于数据域内容的插入排序
要在链表中增加按照数据域内容排序的功能,可以按照以下步骤进行操作:
- 定义一个新的链表节点结构,包含数据域和指向下一个节点的指针。
- 创建一个新的链表头节点,并将其指针指向空。
- 遍历原始链表,对每个节点进行插入排序操作:
- 如果新链表为空,直接将节点插入新链表的头部。
- 如果新链表不为空,找到节点应该插入的位置:
- 从新链表的头部开始,逐个比较节点的数据域和新链表中的节点的数据域。
- 找到新链表中第一个数据域大于等于当前节点数据域的位置,将当前节点插入到该位置之前。
- 返回新链表的头节点。
以下是一个示例代码实现:
class Node:
def __init__(self, data):
self.data = data
self.next = None
def insert_sorted(head, data):
new_node = Node(data)
if head is None:
return new_node
if data < head.data:
new_node.next = head
return new_node
current = head
while current.next is not None and current.next.data < data:
current = current.next
new_node.next = current.next
current.next = new_node
return head
def sort_linked_list(head):
sorted_head = None
current = head
while current is not None:
sorted_head = insert_sorted(sorted_head, current.data)
current = current.next
return sorted_head
使用示例:
# 创建一个链表: 2 -> 4 -> 1 -> 3 -> None
head = Node(2)
head.next = Node(4)
head.next.next = Node(1)
head.next.next.next = Node(3)
# 对链表进行排序
sorted_head = sort_linked_list(head)
# 输出排序后的链表
current = sorted_head
while current is not None:
print(current.data)
current = current.next
输出结果为:1 2 3 4
原文地址: https://www.cveoy.top/t/topic/bR4o 著作权归作者所有。请勿转载和采集!