Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.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_Linked List - Fatal编程技术网

Python 在不初始化空节点的情况下创建链接列表

Python 在不初始化空节点的情况下创建链接列表,python,linked-list,Python,Linked List,我使用python类创建了一个链表。但我无法操纵输出格式: 类节点: def u u init _u;(self,item=None): self.item=项目 self.next=无 类链接列表: 定义初始化(自): self.head=Node() def显示元素(自身): curr=self.head 虽然curr不是None: 打印(当前项目) curr=curr.next def附加(自身,项目): 新节点=节点(项目) curr=self.head 而现在是下一个!=无: cur

我使用python类创建了一个链表。但我无法操纵输出格式:


类节点:
def u u init _u;(self,item=None):
self.item=项目
self.next=无
类链接列表:
定义初始化(自):
self.head=Node()
def显示元素(自身):
curr=self.head
虽然curr不是None:
打印(当前项目)
curr=curr.next
def附加(自身,项目):
新节点=节点(项目)
curr=self.head
而现在是下一个!=无:
curr=curr.next
curr.next=新节点
llist=LinkedList()
allist.append(1)
打印(llist.head.item)#输出:无//但我想在这里显示1
allist.append(2)
打印(llist.head.next.item)#输出:1//但我想在这里显示2
list.showElements()#输出:无12//我只想要12

可能是我的第一个头部节点造成了这个问题但是如果不初始化空节点,我如何使用
next
属性创建下一个节点的引用呢?

您的append方法将头设置为head。next设置为new_节点,但它从不设置头。项,这就是您获得输出=无的原因

因此,在这个实现中,head并不存储实际的元素,它只是用作列表的起点。这不一定是个问题,这是一种实现选择

您还可以将实现更改为在head中存储项,为什么不呢


无论选择哪种方法,我都建议实现first()next()方法来隐藏实现细节。

您的append方法将头设置为head。next设置为new_节点,但它从不设置头。item,这就是您获得输出=无的原因

因此,在这个实现中,head并不存储实际的元素,它只是用作列表的起点。这不一定是个问题,这是一种实现选择

您还可以将实现更改为在head中存储项,为什么不呢


无论选择什么,我都建议实现first()next()方法来隐藏实现细节。

如果没有head,则必须在append函数中指定head。头部始终是一个空节点

class Node:
    def __init__(self, item=None):
        self.item = item
        self.next = None

class LinkedList:
    def __init__(self):
        self.head = None

    def showElements(self):
        curr = self.head
        while curr is not None:
            print(curr.item)
            curr = curr.next

    def append(self, item):
        if self.head is None:
            self.head = Node(item)
            return
        new_node = Node(item)
        curr = self.head
        while curr.next is not None:
            curr = curr.next
        curr.next = new_node

如果没有头,则必须在append函数中指定头。头部始终是一个空节点

class Node:
    def __init__(self, item=None):
        self.item = item
        self.next = None

class LinkedList:
    def __init__(self):
        self.head = None

    def showElements(self):
        curr = self.head
        while curr is not None:
            print(curr.item)
            curr = curr.next

    def append(self, item):
        if self.head is None:
            self.head = Node(item)
            return
        new_node = Node(item)
        curr = self.head
        while curr.next is not None:
            curr = curr.next
        curr.next = new_node

您还可以将实现更改为在头中存储一个项—它尝试了此操作,但引用下一个节点时会出现问题。你能帮我使用append方法吗@joaoYou还可以将实现更改为在头中存储一个项。它尝试了此操作,但在引用下一个节点时出现了问题。你能帮我使用append方法吗@Joao请避免使用
=None
时的代码>。使用
不是
。更多信息。下次我会记得的。感谢您的建议@DiegoMiguelPlease,避免使用
=None
时的代码>。使用
不是
。更多信息。下次我会记得的。谢谢你的建议@DiegoMiguel