返回

初识链表,从链表基本操作入手(附源码案例)

前端






初识链表,从链表基本操作入手(附源码案例)

前言

链表是一种常见的数据结构,在计算机科学中有着广泛的应用。链表的基本操作包括创建、插入、删除、查找和遍历等。掌握链表的基本操作对于理解和使用链表非常重要。本文将详细介绍链表的基本操作,并通过源码案例进行演示。

链表的基本概念

链表是一种线性数据结构,由一组节点组成。每个节点包含两个部分:数据域和指针域。数据域存储实际的数据,指针域存储下一个节点的地址。链表中的节点可以是单链表节点或双链表节点。单链表节点只有一个指针域,指向下一个节点;双链表节点有两个指针域,一个指向下一个节点,另一个指向前一个节点。

链表的基本操作

  • 创建链表:创建一个空链表。
  • 插入节点:在链表中插入一个新节点。
  • 删除节点:从链表中删除一个节点。
  • 查找节点:在链表中查找一个节点。
  • 遍历链表:访问链表中的所有节点。

链表的应用

链表在计算机科学中有着广泛的应用,包括:

  • 存储和处理字符串
  • 存储和处理动态数组
  • 实现队列和栈
  • 实现哈希表
  • 实现图和树

源码案例

为了更好地理解链表的基本操作,我们通过一个源码案例来进行演示。我们实现一个单链表的类,并演示如何使用该类来创建、插入、删除、查找和遍历链表。

class Node:
  def __init__(self, data):
    self.data = data
    self.next = None

class LinkedList:
  def __init__(self):
    self.head = None

  def create_list(self, data):
    new_node = Node(data)
    self.head = new_node

  def insert_node(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

  def delete_node(self, data):
    if self.head is None:
      return

    if self.head.data == data:
      self.head = self.head.next
      return

    current_node = self.head
    previous_node = None
    while current_node is not None and current_node.data != data:
      previous_node = current_node
      current_node = current_node.next

    if current_node is not None:
      previous_node.next = current_node.next

  def find_node(self, data):
    current_node = self.head
    while current_node is not None and current_node.data != data:
      current_node = current_node.next

    return current_node

  def traverse_list(self):
    current_node = self.head
    while current_node is not None:
      print(current_node.data)
      current_node = current_node.next


# 创建一个单链表
linked_list = LinkedList()

# 在链表中插入一些数据
linked_list.create_list(1)
linked_list.insert_node(2)
linked_list.insert_node(3)
linked_list.insert_node(4)
linked_list.insert_node(5)

# 打印链表中的数据
linked_list.traverse_list()

# 在链表中查找一个数据
node = linked_list.find_node(3)
if node is not None:
  print(f"Found node with data {node.data}")
else:
  print("Node not found")

# 从链表中删除一个数据
linked_list.delete_node(3)

# 再次打印链表中的数据
linked_list.traverse_list()

总结

链表是一种常见的数据结构,在计算机科学中有着广泛的应用。链表的基本操作包括创建、插入、删除、查找和遍历等。掌握链表的基本操作对于理解和使用链表非常重要。本文详细介绍了链表的基本操作,并通过源码案例进行了演示。希望本文对您有所帮助。