python - ordenada - listas enlazadas algoritmos
Python-Lista enlazada-Agregar (1)
Intento aprender Listas Enlazadas en python Me dieron clases de Lista Vinculada y me pidieron que creara un método para agregar.
Aquí está el código proporcionado.
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
Aquí está mi método de agregar, pero hay algo mal con eso. Sé que si la lista vinculada está vacía, tengo que crear una, el problema comienza cuando hay elementos dentro.
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)
Cualquiera puede decirme qué hice mal, por favor? Cualquier ayuda es muy apreciada.
Haga dos comprobaciones: la primera comprueba si self.head
se ha inicializado. El segundo debe atravesar la lista hasta que encuentre el último nodo. Asegúrese de no sobrepasar sus límites, de lo contrario no podrá vincular el último nodo al último nodo nuevo .
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