Soy estudiante de informática en Alemania. Mi profesor usó la siguiente pregunta para pensar:Algoritmo para eliminar un elemento en una sola lista vinculada con O (1) complejidad
'Dada una referencia a un nodo en una sola lista vinculada (que no es el último nodo). Proporcione un algoritmo para eliminar este elemento de la lista que tiene una complejidad O (1) mientras mantiene la integridad '.
Pensé en esto, pero estoy bastante seguro de que no existe tal algoritmo. dado que es una lista vinculada única, debe pasar por todos los nodos de la lista hasta que llegue al nodo que debe eliminarse, porque debe modificar el puntero siguiente en el nodo anterior al borrado. Lo que llevaría a O (n) complejidad.
¿E-mail perdiendo cualquier cosa?
Ah, lo tengo. Gracias :) –
tenga cuidado, como Jon explicó, que para que esto funcione, la estructura del nodo debe ser privada. Ninguno debería contener una referencia a los nodos, solo a los datos. De lo contrario, a los consumidores se les dejaría una referencia inválida al objeto toDelete.next anterior (si está en C++ por ejemplo y eliminó la estructura del nodo), o en el mejor de los casos, un objeto nodo no válido. –
Esto no es realmente un "algoritmo" para eliminar un elemento de una lista de enlace único, ¿o sí? Este es el método estándar para eliminar un elemento de la lista. – Dinuk