软件测试/测试开发丨Python 学习笔记 之 链表

点此获取更多相关资料

本文为霍格沃兹测试开发学社学员学习笔记分享

原文链接:https://ceshiren.com/t/topic/26458

链表与数组的区别

  • 复杂度分析
时间复杂度 数组 链表
插入删除 O(n) O(1)
随机访问 O(1) O(n)
  • 其他角度分析

    • 内存连续,利用CPU的机制,可以预读链表中的数据,故访问效率高
    • 而数组在内存中并不是连续存储的,所以CPU缓存不友好,没办法预读
    • 数组的大小不固定,及时动态申请,也需要拷贝数据,费时费力
    • 链表支持动态扩容
    • 链表的缺点是:存储空间大

image1125×1258 40.1 KB

单链表和循环链表

  • 区别在于头结点与尾结点是否相连
  • 循环链表从尾部可以直接到达头,适合环形数据结构,比如约瑟夫问题

双向链表优点

  1. 找到上一个结点的时间复杂度为O(1)

  2. 插入、删除操作更高效

    • 删除结点中"值等于给定值"的结点
    • 删除指定指针指向的结点

代码实现单链表

python 复制代码
# 链节点类
class ListNode:
    def __init__(self, val):
        self.val = val
        self.next = None


# 链表类
class LinkedList:
    def __init__(self):
        self.head = None

    # 根据 data 初始化一个新链表
    def create(self, data):
        self.head = ListNode(0)
        cur = self.head
        for i in range(len(data)):
            node = ListNode(data[i])
            cur.next = node
            cur = cur.next

    # 获取链表长度
    def length(self):
        count = 0
相关推荐
Duckdblab14 分钟前
DuckDB 性能调优终极指南:打造闪电般的分析体验
python
带派擂总1 小时前
Python全栈开发精华版最全合集(包含各种面试题) Day24_异常和错误
python
金銀銅鐵4 小时前
n^5 和 n 的个位数是否总相等?
python·数学
aqi007 小时前
15天学会AI应用开发(九)利用Chroma持久化向量数据
人工智能·python·大模型·ai编程·ai应用
金銀銅鐵7 小时前
借助 Pygame 探索最大公约数的规律
python·数学·游戏
ServBay1 天前
9 个 Python 第三方库推荐,不用 AI 都好像多出一个团队
后端·python
用户8356290780511 天前
如何使用 Python 添加和管理 Excel 批注(完整示例)
后端·python
用户8356290780511 天前
使用 Python 管理 Excel 工作表:创建、复制、删除与重命名
后端·python
荣码1 天前
LangGraph多Agent协作:3个Agent干活比1个强,但我踩了4个坑
java·python