Python 3.x 我可以用python中的字典实现链表吗?
我在学习一个关于数据结构和算法的教程,课程中的讲师使用的是java脚本。讲师使用对象/哈希表/哈希映射在java脚本中实现了一个链表。所以我试着用python做同样的实现,这就是我写的代码Python 3.x 我可以用python中的字典实现链表吗?,python-3.x,algorithm,dictionary,data-structures,linked-list,Python 3.x,Algorithm,Dictionary,Data Structures,Linked List,我在学习一个关于数据结构和算法的教程,课程中的讲师使用的是java脚本。讲师使用对象/哈希表/哈希映射在java脚本中实现了一个链表。所以我试着用python做同样的实现,这就是我写的代码 class LinkedList(): def __init__(self,value): self.head = {"value":value , "next": None} self.tail = self.head self.length
class LinkedList():
def __init__(self,value):
self.head = {"value":value , "next": None}
self.tail = self.head
self.length = 1
def append(self,value):
new_node = {"value":value , "next":None}
self.tail["next"] = new_node
self.tail = new_node
self.length += 1
def prepend(self,value):
new_node = {"value":value , "next":self.head}
self.head = new_node
self.length += 1
def insert(self,index,value):
if index > self.length:
return "The index is greater than the Linked List"
elif index == 0:
self.prepend(value)
elif index == self.length:
self.append(value)
else:
prev_node = self.head
new_node = {"value":value , "next":None}
for i in range(0,self.length):
if i == index-1:
new_node["next"] = prev_node["next"]
prev_node["next"] = new_node
self.length += 1
break
else:
prev_node = prev_node["next"]
def delete(self,index):
current_node = self.head
if index >= self.length:
return "There is no such index in the list"
elif index == 0:
self.head = self.head["next"]
self.length += -1
else:
for i in range(0,self.length-1):
if i == index-1:
unwanted_node = current_node["next"]
current_node["next"] = unwanted_node["next"]
if index == self.length-1:
self.tail = current_node
self.length += -1
break
else:
current_node = current_node["next"]
def reverse(self):
current_node = self.head
new_head = LinkedList(current_node["value"])
while current_node["next"] != None:
current_node = current_node["next"]
new_head.prepend(current_node["value"])
self.head = new_head.head
self.tail = new_head.tail
但当我尝试在互联网上搜索时,有不同的链表实现,它不包含字典。
我只是想知道我所写的代码是否是python中链表的成功实现我建议您编写一些单元测试代码来尝试一下,看看!你可以为一些基本操作编写一些测试,并让自己相信它是有效的。事实上,代码可以完美地工作,因为链表可以正常工作。只是在互联网上,实现链表的代码是不同的。与许多其他数据结构一样,有许多方法可以实现链表。有些在速度或内存使用方面比其他的更有效。只要你通过了功能测试,你就很好。如果您需要建议,还有其他网站提供代码审查等。我个人的观点是,字典用于动态存储键/值对,而类(或命名元组)用于始终具有相同键/值对集的对象。我更喜欢后者来实现链表节点,我更喜欢编写
.value
而不是[“value”]
。然而,字典的速度要快一些。你喜欢什么是意见的问题。另请参阅。我建议您编写一些单元测试代码来尝试一下,看看!你可以为一些基本操作编写一些测试,并让自己相信它是有效的。事实上,代码可以完美地工作,因为链表可以正常工作。只是在互联网上,实现链表的代码是不同的。与许多其他数据结构一样,有许多方法可以实现链表。有些在速度或内存使用方面比其他的更有效。只要你通过了功能测试,你就很好。如果您需要建议,还有其他网站提供代码审查等。我个人的观点是,字典用于动态存储键/值对,而类(或命名元组)用于始终具有相同键/值对集的对象。我更喜欢后者来实现链表节点,我更喜欢编写.value
而不是[“value”]
。然而,字典的速度要快一些。你喜欢什么是意见的问题。另见。