前言:本篇仅代表小菜鸟的个人观点,如有错误,还烦请大家指出。
单向链表
链表作为一种简单的线性结构,分为数据域与指针域,顾名思义,链表在逻辑结构上像一条铁链,一个结点连着下一个,仅靠着指针域指向下一个结点,因此链表结点的构建也就十分简单了。
如图所示,最后一个链表的指针域指向None,单向链表十分简单,现在就开始构建吧。
class Node: # 链表结点
def __init__(self, item): # 传入数据域的数据
self.item = item # 数据域
self.next = None # 指针域,指向下一个结点
结点的构建就如上图,单链表的操作也十分简单,插入,删除,定位,遍历等操作。
但不同于栈和队列存在入元素和出元素的固定顺序,链表可随意位置的删除和增加元素,因此插入和删除就分为了头插尾插和头删尾删。
注意以下所有的操作,一旦改变了头结点就需要返回新的头结点。
功能一:尾插元素
def back_push(head, element: int): # head为头节点,element为待插入元素
new_node = Node(element) # 构建新结点
if not head: # 头节点为空
head = new_node
else: # 头节点不为空
curNode = head
while curNode.next:
cu