软件测试/测试开发丨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
相关推荐
秋912 分钟前
Python工程师面试常问提问和回答(AI工程化方向 · 2026版)
人工智能·python·面试
炎武丶航15 分钟前
LeNet-5深度学习详解:从手写数字识别到代码实战
人工智能·python·深度学习·机器学习·ai·cnn·lenet
sitellla15 分钟前
Pydub:用 Python 处理音频,不写废话
开发语言·python·其他·音视频
TechWayfarer24 分钟前
云服务器地域怎么选:用离线IP数据库识别用户来源并优化部署
服务器·数据库·python·tcp/ip·数据分析
梦想不只是梦与想27 分钟前
Python 中的进程(Process)
python·进程·进程间通
郑洁文28 分钟前
基于Python的恶意流量监测系统的设计与实现
开发语言·python
星辰徐哥29 分钟前
Python AI基础:Matplotlib与Seaborn数据可视化
人工智能·python·matplotlib
AI玫瑰助手31 分钟前
Python流程控制:for循环与range函数的搭配使用
开发语言·python·信息可视化
anew___34 分钟前
2026年Python爬虫技术完全指南:从入门到实战
开发语言·爬虫·python
Jinkxs35 分钟前
Python基础 - 初识内置函数 Python自带的便捷工具
android·java·python