数据结构:链表
创始人
2025-05-30 17:55:46
0

1.单链表的逻辑结构与存储结构

1.1逻辑结构

逻辑结构:数据元素之间的逻辑关系

集合、线性结构(一对一)、树形结构(一对多)、图结构(多对多)

1.2存储结构

存储结构:顺序存储、链式存储、索引存储、散列存储

顺序存储(顺序表):逻辑上相邻的元素物理位置也相邻

链式存储(单链表):逻辑上相邻的元素物理位置不一定相邻

2.单链表的定义

定义单链表:

class ListNode:def __init__(self,val=0,next=None):self.val=valself.next=next

带头结点的单链表(写代码方便):

不带头结点的单链表(写代码麻烦):

3.插入元素

3.1带头节点的单链表

#在第i个位置插入元素
def Insert(head,i,elem):assert i >=0cur = headwhile i!=0:i-=1cur=cur.nextif not cur:return Falsetemp=cur.nextcur.next=elemelem.next=tempreturn True

3.2不带头节点的单链表

#在第i个位置插入元素
def Insert(i,elem)global headassert i>=0if i==0:elem.next=headhead=elemcue=headwhile i>1:i-=1cur=cur.nextif not cur:return Flasetemp=cur.nextcur.next=elemelem.next=tempreturn True

4.删除元素

def ListDelete( head, i) :assert i >= 0cur = headwhile i != 0:i -= 1cur = cur.nextif not cur.next:return Falsecur.next = cur.next.nextreturn True

5.创建单链表

5.1尾插法创建单链表

带头节点的单链表:

def BuildLink_Tai1(1):head = ListNode( )temp = headfor elem in l:temp.next = ListNode(elem)temp = temp.nextreturn headhead = BuildLink_Tail([1,2,3,4])
while head.next:head = head.nextprint( head.val)

不带头节点的单链表:

def BuildLink_Tail(1):if not l:return Nonehead = ListNode(l[0])temp = headfor elem in 1[1:]:temp.next = ListNode(elem)temp = temp.nextreturn headhead = BuildLink_Tail([1,2,3,4])
while head:print( head.val)head = head.next

5.2头插法创建单链表

带头节点的单链表:

def BuildLink_Head( 1) :head = ListNode()for elem in l:temp = head.nexthead.next = ListNode(elem,temp)return head

不带头节点的单链表:

def BuildLink_Head(1):head = Nonefor elem in l:head = ListNode(elem,head)return head

6.双链表

解决单链表无法逆向索引的问题

class DLinkNode:def __init__(self, val=0,next=None,prior):self.val = valself.next = nextself.prior = prior

7.循环链表

7.1循环单链表

从一个节点出发可以找到其他任何节点

7.2循环双链表

从头找到尾和从尾找到头时间复杂度都是O(1)

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...