Python-链表-附加 [英] Python - Linked List - Append
问题描述
我正在尝试学习python中的链接列表,我已经获得了链接列表类,并被要求创建append方法.
I'm trying to learn Linked Lists in python I've been given Linked List class and asked to create append method.
这里是提供的代码.
class Node:
def __init__(self, item, next):
self.item = item
self.next = next
class LinkedList:
def __init__(self):
self.head = None
def add(self, item):
self.head = Node(item, self.head)
def remove(self):
if self.is_empty():
return None
else:
item = self.head.item
self.head = self.head.next
return item
def is_empty(self):
return self.head == None
def __str__(self):
tmp_str = ""
ptr = self.head
while ptr != None:
tmp_str += ptr.item + " "
ptr = ptr.next
return tmp_str
这是我的append方法,但是有问题.我知道如果链接列表为空,我必须创建一个,当内部有元素时问题就开始了.
Here is my append method but there is something wrong with it. I know if the Linked list is empty I have to create one, problem starts when there's elements inside.
def append(self, item):
ptr = self.head
if ptr:
while ptr != None:
ptr = ptr.next
ptr = Node(item, ptr)
else:
self.head = Node(item, self.head)
任何人都可以告诉我我做错了什么吗?非常感谢您的帮助.
Anyone can tell me what did I do wrong please? Any help is much appreciated.
推荐答案
进行两项检查-第一项检查 self.head
是否已初始化.第二个应该遍历列表,直到找到最后一个节点.确保您不超出界限,否则将无法将最后一个节点链接到 new 最后一个节点.
Make two checks - the first checks whether self.head
has been initialised. The second should traverse the list until it finds the last node. Ensure you don't overstep your boundaries, or else you won't be able to link the last node to the new last node.
def append(self, item):
if not self.head:
self.head = Node(item, self.head)
else:
ptr = self.head
while ptr.next: # traverse until ptr.next is None
ptr = ptr.next
ptr.next = Node(item, ptr.next) # initialise ptr.next
这篇关于Python-链表-附加的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!