繁体   English   中英

带有索引指针的双向链表?

[英]A doubly linked list with index pointer?

带有索引指针的双向链表这就是我们在 class 中所说的,但我在互联网上没有找到类似的东西,这是示例代码,但我不明白它的工作方式,如果你能给我一个视觉以这种方式创建的链表,那会很棒

这是代码(以防您无法打开图片):

class CursorList:
def __init__(self,max=100):
    self.max=max
    self.next=[None]*self.max
    self.element=[None]*self.max
    self.prev=[None]*self.max
    self.avail=0
    self.head=None
    self.size=0
    for i in range (self.max-1):
        self.next[i]=i+1
def allocate(self):
    if self.avail is None:
        raise Exception('out of space')
    x=self.avail
    self.avail=self.next[self.avail]
    return x
def free(self,x):
    self.next[x]=self.avail
    self.avail=x
def is_empty(self):
    return self.size==0
def insert_first(self,e):
    index=self.allocate()
    self.next[index]=self.head
    self.element[index]=e
    self.prev[index]=None
    if not self.is_empty():
        self.prev[self.head]=index
    self.head=index
    self.size+=1
def delete_first(self):
    if self.is_empty():
        raise Exception('List is empty')
    index=self.head
    e=self.element[index]
    self.head=self.next[self.head]
    self.size-=1
    self.free(index)
    return e

它是一个常规的双向链表数据结构,因此指向下一个和上一个节点将通过索引完成。 因此,它如下所示(除非您需要将元素的索引视为指向该元素的指针):

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM