Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Cuál es el motivo del error al implementar la lista vinculada (lista vinculada) en la programación de Python y cómo solucionarlo?

¿Cuál es el motivo del error al implementar la lista vinculada (lista vinculada) en la programación de Python y cómo solucionarlo?

¡Hola anfitrión!

Hay muchos problemas en tu código, déjame explicarlos uno por uno

1) Primero que nada, el error en tu código se debe a que quieres usar list para expandir tu Clase SLinkedList. En Python, excepto los objetos iterables integrados, todo lo demás debe implementar la función __iter__() para poder usar la lista para la expansión. Nota: Para determinar si un objeto es iterable, utilice isinstance(obj, Iterable) para determinar si obj es iterable. Iterable debe importarse de colecciones

2) Hay problemas graves con el método de inserción. Según el cartel original Si se inserta el método, debido a que el nodo principal siempre cambia, no podrá encontrar el nodo principal cuando necesite recorrer la lista vinculada;

3) También hay Problemas con la implementación del método pop, debido a que es una cadena unidireccional, por lo que no puede La eliminación comienza desde el nodo final, solo se puede eliminar el nodo principal

4) La intención del método superior Se desconoce

Otros:

Mi plan modificado se enumera a continuación y le puse la guinda al pastel. Cada operación básica devolverá un objeto de lista vinculada, por lo que se pueden realizar operaciones en cadena. se usa para escribir código; la función iterativa se implementa usando rendimiento para evitar ocupar memoria innecesaria durante la expansión.

Otro: cuando expando, tomo directamente los elementos de cada nodo en la lista vinculada y agrego algunos comentarios clave en el código; #?-*-?coding:?utf-8?-* -

clase?Nodo:

def?__init__(self):

'''

olmo: elemento de nodo

nxt: puntero del siguiente nodo

'''

self.elm,?self.nxt?=?Ninguno,?Ninguno

clase? SLinkedList:

def?__init__(self):

''

head:?Cabecera de la lista enlazada

end_point:? Fin de la lista enlazada

'''

self.head?=?None

self.end_point?=?None

def ?push(self,?x ):

p?=?Node()

p.elm?=?x

if?self.head? es?Ninguno:

self.head?=?p

self.end_point?=?p

return?self

self .end_point.nxt?=? p

self.end_point?=?p

retorno?self

def?pop(self):

'''porque lo que se implementa es una lista enlazada individualmente, por lo que el nodo solo se puede eliminar desde el principio'''

if?self.head.nxt?is?None:

retorno

self.head?=?self.head.nxt

retorno?self

def?__iter__(self):

temp_node?=?self.head

mientras?temp_node?is?not?Ninguno:

rendimiento?temp_node.elm

temp_node? =?temp_node.nxt

if?__name__?==?'__main__':

'''Agregue tres elementos 1, 2 y 5 y elimine un nodo principal'' '

¿mi lista de enlaces?=? SLinkedList().push(1).push(2).push(5).pop()

imprimir(lista(mi lista de enlaces))

De hecho, el lenguaje Python usa listas enlazadas un poco. Es superfluo, pero no está de más si lo usas como una necesidad para practicar.

Espero adoptarlo, ¡gracias!