我正在尝试在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
非常感谢你。
答案 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.last
和HashEntry
之间的混合。
作业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