问题
I'm trying to learn Linked Lists in python I've been given Linked List class and asked to create append method.
Here is the code provided.
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
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.
回答1:
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
来源:https://stackoverflow.com/questions/46780008/python-linked-list-append