python 链表数据结构总结
链表定义
链表是一种常见的线性数据结构,由节点(Node)组成,每个节点包含数据和指向下一个节点的引用。Python中没有内置的链表数据结构,但可以使用类来实现链表。
class Node:
def __init__(self, data=None):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def append(self, data):
new_node = Node(data)
if not self.head:
self.head = new_node
return
current = self.head
while current.next:
current = current.next
current.next = new_node
def display(self):
current = self.head
while current:
print(current.data, end=" -> ")
current = current.next
print("None")
上述代码中,Node类表示链表的节点,包含一个数据字段和一个指向下一个节点的引用。LinkedList类包含一个头部指针,它可以指向链表的第一个节点。
合并两个有序列表
def merge_sorted_lists(list1, list2):
merged_list = LinkedList()
current1, current2 = list1.head, list2.head
while current1 and current2:
if current1.data < current2.data:
merged_list.append(current1.data)
current1 = current1.next
else:
merged_list.append(current2.data)
current2 = current2.next
while current1:
merged_list.append(current1.data)
current1 = current1.next
while current2:
merged_list.append(current2.data)
current2 = current2.next
return merged_list
合并无序列表
class Node:
def __init__(self, data=None):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def append(self, data):
new_node = Node(data)
if not self.head:
self.head = new_node
return
current = self.head
while current.next:
current = current.next
current.next = new_node
def display(self):
current = self.head
while current:
print(current.data, end=" -> ")
current = current.next
print("None")
def merge_unsorted_lists(list1, list2):
merged_list = LinkedList()
seen_values = set()
current1 = list1.head
while current1:
if current1.data not in seen_values:
merged_list.append(current1.data)
seen_values.add(current1.data)
current1 = current1.next
current2 = list2.head
while current2:
if current2.data not in seen_values:
merged_list.append(current2.data)
seen_values.add(current2.data)
current2 = current2.next
return merged_list
# 示例用法
list1 = LinkedList()
list2 = LinkedList()
for data in [3, 1, 4, 1, 5]:
list1.append(data)
未完待续