使用Python实现链表操作的基本方法和示例代码

分类:知识百科 日期: 点击:0

链表是一种特殊的数据结构,是一种非连续存储的线性表,由多个节点组成,每个节点都包含了数据域和指针域,指针指向下一个节点,一个节点的指针指向None。使用Python实现链表操作的基本方法有:

1. 构造链表

构造链表的方法有两种:一种是从头结点开始,一种是从尾结点开始。

# 从头结点开始构造
class Node(object):
    def __init__(self, data, next_node=None):
        self.data = data
        self.next_node = next_node

head = Node(1)
node2 = Node(2)
node3 = Node(3)

head.next_node = node2
node2.next_node = node3

# 从尾结点开始构造
tail = Node(3)
node2 = Node(2, tail)
head = Node(1, node2)

2. 读取链表

可以通过遍历链表的方式来读取链表中的所有节点,即从头节点开始,每次读取一个节点,直到读取到一个节点。

def read_list(head):
    cur = head
    while cur != None:
        print(cur.data)
        cur = cur.next_node

# 调用
read_list(head)

3. 插入节点

插入节点的方法有三种:在头结点后插入、在指定节点后插入、在尾节点后插入。

# 在头结点后插入
def insert_head(head, data):
    new_node = Node(data)
    new_node.next_node = head
    return new_node

# 在指定节点后插入
def insert_after(node, data):
    new_node = Node(data)
    new_node.next_node = node.next_node
    node.next_node = new_node

# 在尾节点后插入
def insert_tail(tail, data):
    new_node = Node(data)
    tail.next_node = new_node
    return new_node

4. 删除节点

删除节点也有三种方法:删除头结点、删除指定节点、删除尾节点。

# 删除头结点
def delete_head(head):
    head = head.next_node
    return head

# 删除指定节点
def delete_node(node):
    node.data = node.next_node.data
    node.next_node = node.next_node.next_node

# 删除尾节点
def delete_tail(tail):
    cur = head
    while cur.next_node != tail:
        cur = cur.next_node
    cur.next_node = None
    return cur

5. 查找节点

查找节点的方法有两种:根据节点值查找、根据节点位置查找。

# 根据节点值查找
def find_by_value(head, value):
    cur = head
    while cur != None and cur.data != value:
        cur = cur.next_node
    return cur

# 根据节点位置查找
def find_by_index(head, index):
    cur = head
    pos = 0
    while cur != None and pos != index:
        cur = cur.next_node
        pos += 1
    return cur
标签:

版权声明

1. 本站所有素材,仅限学习交流,仅展示部分内容,如需查看完整内容,请下载原文件。
2. 会员在本站下载的所有素材,只拥有使用权,著作权归原作者所有。
3. 所有素材,未经合法授权,请勿用于商业用途,会员不得以任何形式发布、传播、复制、转售该素材,否则一律封号处理。
4. 如果素材损害你的权益请联系客服QQ:77594475 处理。