返回
九大基本操作-领略链表魅力
前端
2023-10-25 14:48:31
链表,一种非线性的数据结构,以其独特的节点存储方式,成为算法和数据结构领域的中坚力量。本文将带领您领略链表的魅力,掌握九大基本操作,成为链表编程高手!
1. 创建链表:构建存储节点框架
class Node:
def __init__(self, data):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
2. 插入节点:灵活增添节点
def insert_at_beginning(self, data):
new_node = Node(data)
new_node.next = self.head
self.head = new_node
def insert_at_end(self, data):
new_node = Node(data)
if self.head is None:
self.head = new_node
else:
current_node = self.head
while current_node.next is not None:
current_node = current_node.next
current_node.next = new_node
3. 删除节点:从链表中摘除节点
def delete_at_beginning(self):
if self.head is not None:
self.head = self.head.next
def delete_at_end(self):
if self.head is None:
return
if self.head.next is None:
self.head = None
else:
current_node = self.head
while current_node.next.next is not None:
current_node = current_node.next
current_node.next = None
4. 查找节点:精准定位节点
def search(self, data):
current_node = self.head
while current_node is not None:
if current_node.data == data:
return current_node
current_node = current_node.next
return None
5. 修改节点:调整节点数据
def update(self, old_data, new_data):
current_node = self.head
while current_node is not None:
if current_node.data == old_data:
current_node.data = new_data
return
current_node = current_node.next
6. 链表长度:计算链表节点数
def length(self):
count = 0
current_node = self.head
while current_node is not None:
count += 1
current_node = current_node.next
return count
7. 链表反转:颠倒链表顺序
def reverse(self):
prev_node = None
current_node = self.head
while current_node is not None:
next_node = current_node.next
current_node.next = prev_node
prev_node = current_node
current_node = next_node
self.head = prev_node
8. 链表排序:有序排列节点
def sort(self):
current_node = self.head
while current_node is not None:
min_node = current_node
next_node = current_node.next
while next_node is not None:
if next_node.data < min_node.data:
min_node = next_node
next_node = next_node.next
current_node.data, min_node.data = min_node.data, current_node.data
current_node = current_node.next
9. 打印链表:展示链表内容
def print_list(self):
current_node = self.head
while current_node is not None:
print(current_node.data, end=" ")
current_node = current_node.next
print()
掌握这九大基本操作,您就踏上了链表编程的康庄大道。链表的魅力,等待您亲手挖掘!