Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 我可以用python中的字典实现链表吗?_Python 3.x_Algorithm_Dictionary_Data Structures_Linked List - Fatal编程技术网

Python 3.x 我可以用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

我在学习一个关于数据结构和算法的教程,课程中的讲师使用的是java脚本。讲师使用对象/哈希表/哈希映射在java脚本中实现了一个链表。所以我试着用python做同样的实现,这就是我写的代码

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”]
。然而,字典的速度要快一些。你喜欢什么是意见的问题。另见。