每个节点具有多个值的链接列表

时间:2017-03-10 12:21:49

标签: python oop linked-list hashtable nodes

我正在尝试在Python 3中为每个节点实现一个包含多个变量(在本例中为两个)的双向链表。

首先,我为它创建了一个HashEntry类(我将在此之后创建一个哈希表):

const {foo, ...state} = this.state;
this.setState({state});

然后我必须将这个类用于我的双向链表操作,所以,但是我不知道该怎么做,如果我必须创建另一个Node类或者我要为每个类添加两个值方法 这就是我的尝试:

class HashEntry(self):
    def __init__(self, key, data, p, n):
        self.key = int(key)
        self.data = str(data)
        self.prev = n
        self.next = p

非常感谢你。

1 个答案:

答案 0 :(得分:0)

HashEntry管理缺失部分外,源代码显示一些不允许执行软件的错误。

次要错误1 - Python class不会继承self,建议您继承class object

类声明应该是:

class HashEntry(object):
class Dlist(object):

而不是:

class HashEntry(self):
class Dlist(self):

次要错误2 - 在第一个链接列表中插入第一个self.head时,self.lastHashEntry之间的混合。

作业self.head = self.last不起作用,因为self.last未初始化。

    aux = Node(e, None, None)
    if self.head is None:
        # self.head = self.last <= wrong assignement
        self.head = aux
        self.last = self.head # assign last based to the head
    else:

分析1 - 使用HashEntry添加key管理。

要使用模拟散列表访问创建双链表,第一个链表必须管理一种散列表,第二个链表连接到第一个链表以存储具有相同{{1}的所有节点}。

1 - 添加到key class Dlist函数以检查第一个链接列表中是否存在节点search(self,key)的密钥:

  

返回的值是aux = Node(e, None, None)的{​​{1}}节点   HashEntry

key

2 - 添加到None def search(self,key): curr = self.head while (curr is not None): if (key == curr.element.key): return (curr) curr = curr.next return (None) 函数,将第class Node个节点append(self,nwnode)添加到第二个链接列表。

  

第二个列表必须标题节点nwnode

HashEntry.key

3 - 连接element的{​​{1}}中的两个功能。

  

当第一个链接列表不存在时,检查def append(self,nwnode): if (self.element.next is None): self.element.next = nwnode # adding the first homo-key nwnode.element.prev = self else: curr = self.element.next while (curr.next is not None): curr = curr.next curr.next = nwnode # adding others homo-key nwnode.element.prev = curr 是否存在   空。

insert(self, e)

然后在第一个链表中插入新的HashEntry class Dlist节点或将其附加到第二个链表。

key