在单向链表中,每个节点只有一个指向下一个节点的指针。单向链表的结构如下:
class ListNode:
def __init__(self, value=0, next=None):
self.value = value
self.next = next
- `value` 是节点的值。
- `next` 是指向列表中下一个节点的指针(或引用),如果节点是链表的最后一个节点,则 `next` 为 `None`。
head->元素->元素->..........->None
链表的基本操作包括:
1. **插入节点**:在链表的指定位置插入一个新节点。
2. **删除节点**:从链表中删除指定节点。
3. **遍历链表**:从头节点开始,遍历链表中的每个节点。
4. **搜索节点**:在链表中查找具有特定值的节点。
# 定义节点 class Node(): def __init__(self, item): self.item = item self.next = None # 初始化链表 class Linklist(): def __init__(self): self.head = None def len(self): # 计算链表长度 s = 0 t = self.head while t: t = t.next s += 1 return s def insert(self, n, item): # 在链表中插入元素 t = Node(item) if n == 0: t.next = self.head self.head = t elif n >= self.len(): if self.head == None: self.head == t else: k = self.head while k.next: k = k.next k.next = t else: y = self.head i = 0 while i < index - 1: y = y.next i += 1 t.next = y.next y.next = t def delete(self, item): # 在链表中删除元素 y = self.head if y == None: return None elif y.item == item: self.head = y.next del y else: while y.next.item != item: y = y.next y.next = y.next.next def query(self, item): # 在链表中查找元素 y = self.head if y == None: return None else: i = 0 l = [] while y.next: l.append(y.item) y = y.next if len(l) == 0: return None else: print(l) for i in l: if i == item: print(f"{l.index(i)},{item}", end=" ") def printf(self): # 打印链表元素 y = self.head while y: print(y.item, end=" ") y = y.next print()