本文为霍格沃兹测试开发学社学员学习笔记分享
原文链接:https://ceshiren.com/t/topic/26458
链表与数组的区别
时间复杂度 | 数组 | 链表 |
---|---|---|
插入删除 | O(n) | O(1) |
随机访问 | O(1) | O(n) |
其他角度分析
image1125×1258 40.1 KB
单链表和循环链表
双向链表优点
找到上一个结点的时间复杂度为O(1)
插入、删除操作更高效
代码实现单链表
# 链节点类
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