在链表尾部插入元素,Python 3 hackerrank

2024-06-28 21:00:26 发布

您现在位置:Python中文网/ 问答频道 /正文

Python 3 Problem

我需要知道如何解决这个问题,这是我的代码(显然不正确),我还附上了黑客挑战的链接。前面的所有答案都是用较旧的python编写的,而练习本身也发生了很大的变化。您所要做的就是在链表的尾部插入数据。 非常感谢你,祝你今天愉快

def insertNodeAtTail(head, data):
    if head == None:
        head.data = data
        return head
    else: 
        while head:
            head = head.next
        head.data = data
        return head

Tags: 数据答案代码nonedatareturnif链接
2条回答

找到了答案

def insertNodeAtTail(head, data):
    if head is None:
            return SinglyLinkedListNode(data)
    pnt = head
    while pnt.next:
            pnt = pnt.next
    pnt.next = SinglyLinkedListNode(data)
    return head

好吧,一下子,我就发现了一个大问题。检查head == None,如果是True,则继续尝试在None中不存在的对象中设置data属性。另外,您应该使用if head is None。如果成功,您可能需要创建一个新的节点对象,将其data属性设置为传入数据,并将head设置为指向该新节点

您的另一半代码也有类似的问题。您的代码也不会在现有列表中添加节点……它只是更改列表中最后一个节点指向的数据。在这里,您希望创建一个包含传入数据的节点,并将node.next指向它

我不知道如何创建节点的详细信息,但下面是关于您的代码应该是什么样子的:

def insertNodeAtTail(head, data):
    if head is None:
        head = Node(data)
        return head
    else:
        node = head
        while node.next:
            node = node.next
        node.next = Node(data)
        return head

假定Node()将其next属性设置为None,并将其data属性设置为传入的数据

相关问题 更多 >