Python编程实现链表数据结构
发布时间:2023-12-04 11:36:39
链表是一种常用的数据结构,它由节点(Node)组成,每个节点包含了数据和指向下一个节点的引用。链表可以用来表示任意长度的数据序列,其插入和删除操作的时间复杂度为O(1)。
以下是使用Python实现链表的示例代码:
class Node:
def __init__(self, data):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def is_empty(self):
return self.head is None
def append(self, data):
new_node = Node(data)
if self.is_empty():
self.head = new_node
else:
current = self.head
while current.next:
current = current.next
current.next = new_node
def insert_at_beginning(self, data):
new_node = Node(data)
new_node.next = self.head
self.head = new_node
def delete(self, data):
if self.is_empty():
return
if self.head.data == data:
self.head = self.head.next
return
current = self.head
while current.next:
if current.next.data == data:
current.next = current.next.next
return
current = current.next
def print_list(self):
current = self.head
while current:
print(current.data, end=" ")
current = current.next
print()
上面的代码中,Node类表示链表的节点,LinkedList类表示整个链表。在LinkedList类的构造函数中,我们初始化一个空链表,头结点(head)被设置为None。is_empty()方法用于判断链表是否为空。
append()方法用于向链表末尾添加一个节点,如果链表为空,直接将新节点设置为头结点,否则遍历链表到最后一个节点,将新节点设置为最后一个节点的后继。
insert_at_beginning()方法用于在链表的头部插入一个节点。首先创建一个新节点,并将其后继设置为当前头结点,然后将新节点设置为头结点。
delete()方法用于删除链表中指定的数据。首先判断链表是否为空,然后判断头结点是否是要删除的节点,如果是,直接将头结点的后继设置为新的头结点。否则,遍历链表,一旦找到要删除的节点,将前一个节点的后继设置为要删除节点的后继。
print_list()方法用于遍历链表并打印每个节点的数据。
下面是使用链表的示例代码:
# 创建一个链表对象 llist = LinkedList() # 向链表末尾添加节点 llist.append(1) llist.append(2) llist.append(3) llist.append(4) # 在链表头部插入节点 llist.insert_at_beginning(0) # 打印链表 llist.print_list() # 输出:0 1 2 3 4 # 删除节点 llist.delete(2) # 打印链表 llist.print_list() # 输出:0 1 3 4
在上面的示例中,我们首先创建了一个LinkedList对象,并向链表中添加了一些节点。然后,在链表的头部插入了一个新的节点。最后,我们删除了一个节点,并打印了链表的内容。
这是一个简单的使用链表数据结构的示例,链表还有其他许多操作,如反转链表、查找链表中的元素、合并两个有序链表等等。
