返回

九大基本操作-领略链表魅力

前端

链表,一种非线性的数据结构,以其独特的节点存储方式,成为算法和数据结构领域的中坚力量。本文将带领您领略链表的魅力,掌握九大基本操作,成为链表编程高手!

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()

掌握这九大基本操作,您就踏上了链表编程的康庄大道。链表的魅力,等待您亲手挖掘!