数据结构-链表

本文介绍了链表的基本概念,包括单向链表和双向链表,详细阐述了链表的插入、删除、访问和搜索操作的时间复杂度。强调链表在读少写多、变化频繁场景下的优势。此外,提供了Python实现链表操作的示例,并列举了常见链表问题如移除链表元素、反转链表等的解题思路。最后,讨论了Python中实现链表的特性,以及与C语言实现的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(该篇基本等价于up主视频的学习笔记记录)

基本概念

  • 不连续内存空间中,存储当前元素与next指针指向下一个元素,即存储下一个元素的内存地址
  • 存在单向链表和双向链表(存在previous指针指向上一个元素)
  • 基本操作及其时间复杂度
    - 访问(通过索引获取):O(n)
    - 搜索(通过元素获取):O(n)
    - 插入:O(1)
    - 删除:O(1)
    (访问是指根据索引查询,搜索是指根据指根据值查询)
    • 优点
      • 易插入删除
    • 缺点:
      • 不易查询
    • 应用场景:
      • 适用于读少些多、变化频繁的线性表

基本操作python实现

#创建
class ListNode():
	def __init__(self,val):
		self.val=val
		self.next=None
		#self.pre=None   #双向链表
#添加元素5,给定链表头节点head(目前默认为尾部添加)
cur=head
while cur.next:
	cur=cur.next
cur.next=ListNode(5)
cur=cur.next
#访问第2个元素,给定链表头节点head
cur=head
idx=0
while idx<1:
	cur=cur.next
	idx+=1
#修改第2个元素为6
cur=head
idx=0
while idx<1:
	cur=cur.next
	idx+=1
cur.val=6
#查找元素3
cur=head
while cur:
	if cur.val==3:
		res=True
	cur=cur.next
res=False
#删除元素3:请见下方题目
#链表的长度	
cur=head
len_=0
while cur:
	cur=cur.next
	len_+=1

题目

熟悉数据结构

-203. 移除链表元素
-206. 反转链表

熟悉数据结构+算法

这里例举一般遇到链表题都有哪些解法,建议先看算法解题套路相关文章

其他

python没有链表类型变量?

很多的教材都是用C语言实现链表,因为c有指针,可以很方便的控制内存,很方便就实现链表,其他的语言,则没那么方便,由于python是动态语言,可以直接把对象赋值给新的变量,于是在python一切皆为对象的原理上实现链表的各项操作。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值