Arrays 双链表数组的实现
我刚刚开始研究数据结构,我需要了解双链表,它由3个数组实现——数据、下一个、上一个 我想实现delete函数,它接收一个值,并从数组中删除它 我有一个指向列表头的指针L和一个指向数据数组中第一个自由元素的无指针 我想实现它,我知道我需要更新所有3个阵列 以下是我在psu中删除第一个元素的尝试:Arrays 双链表数组的实现,arrays,arraylist,data-structures,linked-list,doubly-linked-list,Arrays,Arraylist,Data Structures,Linked List,Doubly Linked List,我刚刚开始研究数据结构,我需要了解双链表,它由3个数组实现——数据、下一个、上一个 我想实现delete函数,它接收一个值,并从数组中删除它 我有一个指向列表头的指针L和一个指向数据数组中第一个自由元素的无指针 我想实现它,我知道我需要更新所有3个阵列 以下是我在psu中删除第一个元素的尝试: Delete(value) if L == -1 : return -1 if D[L] == value: temp = N[L] N[L] = FREE
Delete(value)
if L == -1 : return -1
if D[L] == value:
temp = N[L]
N[L] = FREE
FREE = L
L = temp
上面的代码不会更新p(Prev)数组
我不确定我应该如何更新p,但我认为我应该这样做:
Delete(value)
if L == -1 : return -1
if D[L] == value:
P[FREE] = L
temp = N[L]
N[L] = FREE
FREE = L
L = temp
P[L] = P[FREE]
正确吗?首先编写一个函数来查找列表中的值:
Find(值)
节点=L
while节点!=-1:
如果D[node]==值:
返回节点
node=N[节点]
返回-1
然后,删除功能可以是:
Delete(值)
节点=查找(值)
如果节点==-1:
返回-1
D[node]=0#可选数据擦除
#调整指向已删除节点的链接
如果节点==L:
L=N[节点]#删除第一个节点
其他:
N[P[node]]=N[node]
如果N[节点]!=-1:
P[N[节点]]=P[节点]
#从“删除”节点调整链接
P[节点]=-1;
N[节点]=空闲
#自由列表的前置
P[FREE]=节点
自由=节点
返回节点
太棒了!非常感谢你的帮助!我已经测试过几次了,现在我理解正确了,非常感谢!