我试图在python中学习链接列表我已经获得了Linked List类,并被要求创建追加方法。
这是提供的代码。
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
这是我的追加方法,但它有问题。我知道如果链接列表是空的我必须创建一个,当内部有元素时会出现问题。
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)
任何人都可以告诉我,我做错了什么?非常感谢任何帮助。
答案 0 :(得分:3)
进行两次检查 - 首先检查self.head
是否已初始化。第二个应遍历列表,直到找到最后一个节点。确保不要超越边界,否则您将无法将最后一个节点链接到 new 最后一个节点。
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