上文介绍了单链表的几种创建方法,本文介绍另外两种操作:单链表插入节点和删除节点。需要特别注意的是插入操作的顺序问题。
代码示例
1、创建链表
class Node(): def __init__(self, item, next=None): self.item = item self.next = next def create_link_tail(lst): head = tail = Node(lst[0]) for elem in lst[1:]: node = Node(elem) tail.next = node tail = node return head def print_link(head): node = head while node: print(node.item, end=' ') node = node.next head = create_link_tail([1, 2, 3]) print_link(head)
2、插入节点
def insert_link(head, idx, elem): cur_node = Node(elem) # 0号位置单独处理 if idx == 0: cur_node.next = head head = cur_node else: node = head i = 0 while node: if i == idx - 1: # 注意顺序 cur_node.next = node.next node.next = cur_node i += 1 node = node.next return head head = insert_link(head, 0, 4) head = insert_link(head, 1, 5) print_link(head)
3、删除节点
def delete_link(head, idx): if head.next == None: print('empty link') return None elif idx == 0: head = head.next else: node = head i = 0 while node: if i == idx - 1: node.next = node.next.next break i += 1 node = node.next return head head = delete_link(head, 0) head = delete_link(head, 2) print_link(head)
本文为 陈华 原创,欢迎转载,但请注明出处:http://ichenhua.cn/read/321