返回
用简洁的方法学习Python链表实践
见解分享
2024-02-08 23:15:54
一、链表的基本概念
链表是一种数据结构,它由一系列节点组成,每个节点包含一个数据项和一个指针指向下一个节点。链表中的第一个节点称为头结点,最后一个节点称为尾结点。
二、操作链表的基本方法
- 创建链表:创建一个链表需要给定链表中第一个节点的值,然后依次给定各个节点的值,直到最后一个节点。
- 查找节点:可以通过线性查找或二分查找等方法查找链表中的某个节点。
- 插入节点:在链表中的某个节点后插入一个新节点,需要先找到该节点,然后将新节点插入到该节点的后面。
- 删除节点:删除链表中的某个节点,需要先找到该节点,然后将该节点从链表中删除。
三、链表的应用场景
链表广泛应用于各种数据结构和算法中,例如栈、队列、哈希表等。此外,链表还用于表示字符串、图等数据结构。
四、Python中的链表实现
Python中可以通过使用列表来实现链表。列表是一种动态数组,它可以存储任意数量的数据项。使用列表实现链表时,可以使用列表的索引来访问链表中的元素。
class Node:
def __init__(self, value):
self.value = value
self.next = None
class LinkedList:
def __init__(self):
self.head = None
self.tail = None
def insert_at_head(self, value):
new_node = Node(value)
if self.head is None:
self.head = new_node
self.tail = new_node
else:
new_node.next = self.head
self.head = new_node
def insert_at_tail(self, value):
new_node = Node(value)
if self.tail is None:
self.head = new_node
self.tail = new_node
else:
self.tail.next = new_node
self.tail = new_node
def remove_at_head(self):
if self.head is None:
return
if self.head == self.tail:
self.head = None
self.tail = None
else:
self.head = self.head.next
def remove_at_tail(self):
if self.tail is None:
return
if self.head == self.tail:
self.head = None
self.tail = None
else:
current_node = self.head
while current_node.next != self.tail:
current_node = current_node.next
current_node.next = None
self.tail = current_node
def print_list(self):
current_node = self.head
while current_node is not None:
print(current_node.value, end=" ")
current_node = current_node.next
print()
if __name__ == "__main__":
linked_list = LinkedList()
linked_list.insert_at_head(1)
linked_list.insert_at_tail(2)
linked_list.insert_at_head(3)
linked_list.insert_at_tail(4)
linked_list.print_list() # 输出:3 1 2 4
linked_list.remove_at_head()
linked_list.remove_at_tail()
linked_list.print_list() # 输出:1 2