ordenado ordenada listas lista ligadas ligada insertar hacer enlazadas enlazada dobles como algoritmos algoritmo python python-3.x linked-list

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