Python 在不初始化空节点的情况下创建链接列表
我使用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
类节点:
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