在Python中实现链表有问题
关于实现链表,有一个黑客问题。这是非常基础的,我认为我会做的很快,因为我已经做了各种各样的链表实现在C++中。但我被困在某个地方了在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:
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这可能是一个练习问题。是的,这不是任何类型的面试。这是一个非常基本的练习题。是的,谢谢!这似乎奏效了。虽然我不得不做一些修改,因为问题要求我在列表末尾插入元素。是的,谢谢!这似乎奏效了。尽管我不得不做一些修改,因为问题要求我在列表末尾插入元素。