数据结构-链表
「链表 Linked List」是一种线性数据结构,其中每个节点都是单独的对象,各个节点之间通过指针连接。

每个节点包括两部分:一是结点「值 Value」,二是指向下一结点的「指针 Pointer」
# 节点 class Node: def __init__(self, item): self.item = item self.next = None
创建链表:
- 头插法
- 尾插法
头插法
def create_linklist(li): # li为列表 head = Node(li[0]) for element in li[1:]: node = Node(element) # 创建节点 node.next = head # 第一步,node的指针先跟头节点连接起来 head = node # 第二步,head指向新的节点 return head
尾插法
def creat_linklist_tail(li): # li为列表 head = Node(li[0]) tail = head for element in li[1:]: node = Node(element) # 创建节点 tail.next = node # 尾节点指针指向新的节点 tail = node # tail指向新的节点 return head # 不能返回tail,tail已经是最后一个节点了
链表的操作
- 插入节点
- 删除节点
- 访问节点
- 遍历节点
- 打印链表
插入节点
# 链表插入节点 def insert(n0,p): # 在链表节点n0后面插入节点p n1 = n0.next # n1为n0的下一个节点 p.next = n1 # 插入节点p的指针指向n1 n0.next = p # n0的下一个节点指向p
删除节点
# 链表删除节点 def remove_linklist(n0): # 删除n0后面的首个节点 p = n0.next # p为n0的下一个节点 n1 = p.next # n1为p的下一个节点 n0.next = n1
访问节点
# 访问链表中 索引为index 的节点 def access(head, index): # head为头节点 for _ in range(index): # 一直遍历到index-1 if not head: return None head = head.next # index-1的下个节点index return head.item # 返回index值
遍历节点
# 遍历链表查找 def find_linklist(head, target): # 在链表中查找 值为 target 的首个节点 index = 0 while head: if head.item == target: return index head = head.next index += 1 return None
打印链表
def print_linklist(lk): while lk: print(lk.item, end=',') lk = lk.next

 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号