Python链表黑客排名

时间:2017-02-07 18:38:44

标签: python python-3.x

我解决了这个问题但在此之前我正在尝试其他不起作用的东西。

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

这是我先做的,然后我做了这个

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

以下是问题https://www.hackerrank.com/challenges/30-linked-list

的链接

1 个答案:

答案 0 :(得分:0)

很明显它不会起作用,因为在这里:

current = head
while current != None:
    current = current.next
current = Node(data)

迭代,直到currentNone,然后您创建一个新节点并将本地变量current 设置为节点。之前的next **仍为None。因此,您需要设置之前的next。例如,您可以使用:

current = head
while current.next != None:
    current = current.next
current.next = Node(data)

一个小改进是使用is not None而不是!= None:因为只有一个None,您可以使用引用相等(is)。