2022.02.17 《算法通关手册》 链表章数据结构,python版
1 链表基础知识
1.1 定义
物理地址可以连续,也可以不连续,,来存储同类型的数据
优点
存储空间不必事先分配,在需要存储空间的时候可以临时申请,不会造成空间的浪费;一些操作的时间效率远比数组高(插入、移动、删除元素等)。
缺点
不仅数据元素本身的数据信息要占用存储空间,指针也需要占用存储空间,链表结构比数组结构的空间开销大。
链表类型
- 上图为单链表
- 双链表:
- 循环链表:
1.2 代码实现
创建结点
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
- def _init_(self)在Python里面很常见,类似C++构造函数
- 我们定义这个叫做 LIstNode类 里面,它自己包含了两个参数:① 初始化为0的值 ② 和空的next
- 可以看成,两个参数传进来,传给自己的val,next
创建列表
class LinkedList:
def __init__(self):
sefl.head = None
- 有个叫 LinkedList 的结构,Link是连接的意思,List 为列表
- 这个链表只是表头,所以不需要传参数
- 里面有结构 .head,这时候表头也是空的
2 链表的基本操作
2.1 创建一个链表
我们有组数据 data , 以链表方式创建
def create(self, data):
#