Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.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中实现链表有问题_Python_Python 2.7_Linked List - Fatal编程技术网

在Python中实现链表有问题

在Python中实现链表有问题,python,python-2.7,linked-list,Python,Python 2.7,Linked List,关于实现链表,有一个黑客问题。这是非常基础的,我认为我会做的很快,因为我已经做了各种各样的链表实现在C++中。但我被困在某个地方了 class Node: def __init__(self,data): self.data = data self.next = None class Solution: def display(self,head): current = head while current:

关于实现链表,有一个黑客问题。这是非常基础的,我认为我会做的很快,因为我已经做了各种各样的链表实现在C++中。但我被困在某个地方了

class Node:
    def __init__(self,data):
        self.data = data
        self.next = None
class Solution:
    def display(self,head):
        current = head
        while current:
            print current.data,
            current = current.next  

    def insert(self,head,data): 
        new_node = Node(data)
        if head == None:
            head = new_node
        else:
            current = head
            while current.next:
                current = current.next
            current.next = new_node

mylist= Solution()
T=int(input())
head=None
for i in range(T):
    data=int(input())
    head=mylist.insert(head,data)   
mylist.display(head)

只有插入功能是可编辑的。其余代码由HackerRank提供,无法更改。代码在插入结束时不会打印任何内容,当我尝试在插入时打印出值时,似乎
头一直向前移动,而不是停留在开始处。

我认为错误在这里:

head = mylist.insert(head, data)
方法
Solution.insert()
没有返回任何内容,因此每次都不会为head分配任何内容


完成后,
Solution.insert()
必须返回创建的
new\u节点
我认为错误在这里:

head = mylist.insert(head, data)
方法
Solution.insert()
没有返回任何内容,因此每次都不会为head分配任何内容


完成后,
Solution.insert()
必须返回创建的
新节点

您将在所有元素之后追加
新节点
,并且您也不会返回新创建的节点。修改
insert
方法如下:

def insert(self,head,data): 
    new_node = Node(data)
    if head is not None:
        current = head
        new_node.next = current
    return new_node

在所有元素之后追加
新节点
,并且不返回新创建的节点。修改
insert
方法如下:

def insert(self,head,data): 
    new_node = Node(data)
    if head is not None:
        current = head
        new_node.next = current
    return new_node

代码不起作用的原因是您在
insert
方法中执行的无检查

if head == None:
        head = new_node

您正在更新的
head
是函数
insert
的本地函数,不会在循环中更改
head
。因此,
head
在循环中总是
None

代码不起作用的原因是您在
insert
方法中执行的None检查

if head == None:
        head = new_node

您正在更新的
head
是函数
insert
的本地函数,不会在循环中更改
head
。所以,
head
总是
None
在你的循环中。

那么你要求我们通过你的“面试”吗?@JohnZwinck这可能是一个练习问题。是的,这不是任何面试。这是一个非常基本的练习问题。所以你要求我们为你通过“面试”?@JohnZwinck这可能是一个练习问题。是的,这不是任何类型的面试。这是一个非常基本的练习题。是的,谢谢!这似乎奏效了。虽然我不得不做一些修改,因为问题要求我在列表末尾插入元素。是的,谢谢!这似乎奏效了。尽管我不得不做一些修改,因为问题要求我在列表末尾插入元素。