Implementación de la lista doblemente vinculada C ++

Implementación de la lista doblemente vinculada C ++
Una lista doblemente vinculada es el concepto estructural en C ++ que consta de 1 o más nodos. Un solo nodo debe tener tres partes I.mi., datos, una referencia hacia el nodo anterior y el próximo nodo. Se dice que el primer nodo es el nodo de "cabeza" que se utiliza para acceder a la lista general vinculada. El último nodo de una lista vinculada siempre tiene el valor nulo. Si es nuevo en este concepto y busca recursos auténticos para obtener conocimiento, entonces esta guía es para usted.

Comencemos este artículo con la nueva creación de archivos C ++. Tenemos que crearlo usando la consulta de "toque" terminal. Después de la creación de archivos, nuestra próxima tarea es abrirla y crear algún código C ++. Para la apertura, puede utilizar cualquier editor incorporado de Ubuntu 20.04 Como un editor de texto, editor VIM o editor de GNU Nano. Entonces, estamos utilizando la instrucción "nano" en nuestro shell para abrir el doblablemente.archivo cc en él.

Ejemplo 01:

Hagamos un ejemplo básico de código C ++ para crear una lista de doble enlace. Después de la apertura del archivo, hemos agregado el iOStream. Se utilizará el espacio de nombres estándar de C ++. Después de esto, hemos estado creando una estructura de nodo llamada "nodo" con algunos de sus elementos. Contiene la variable entera "D" como parte de los datos. Luego, hemos definido tres nuevas estructuras de nodo. El nodo "P" muestra el nodo anterior, "N" muestra el siguiente nodo, y el nodo principal "H" se especifica NULL como otro nodo.

Ahora, la estructura anterior no sirve hasta que agregamos y mostremos algunos nodos en el código del programa. Estamos utilizando la función add () para obtener los datos del nodo de la función main (). En su primera línea, hemos estado creando un nuevo nodo "nuevo nodo" utilizando la estructura "nodo" y asignándole una memoria que sea igual al tamaño de un "nodo". Los caracteres de signo "->" se utilizan para hacer referencia a las partes del nodo I.mi., A continuación, anterior, datos, etc. Por lo tanto, hemos estado haciendo referencia a los datos de un nuevo nodo usando -> Sing y agregando datos aprobados por la función Main () en el parámetro "ND" en la variable "D" de un nuevo nodo. El nodo anterior de un nuevo nodo se inicializará a NULL y su próximo nodo será una "cabeza". La declaración "si" está aquí para verificar que el valor de la cabeza "h" no es igual a nulo. Si el valor de "h" no es nulo, hará el nodo anterior de un nodo "cabeza", un nuevo nodo. Además, la cabeza también será un nuevo nodo.mi., tener un valor de un nuevo nodo.

Aquí viene la función "show ()" para mostrar el nodo creado. Dentro de él, hemos creado un nodo "PTR" y lo hemos convertido en una "cabeza". El bucle "while" está aquí para confirmar que el valor de "PTR" no es nulo. Si bien la condición está satisfecha, la instrucción CoUT mostrará los datos agregados por un usuario de la misma manera opuesta. Ahora, el próximo de los nodos "PTR" se convertirá en "PTR".

Aquí está nuestra función principal () desde donde comienza la ejecución. Hemos llamado a la función "Agregar" 4 veces para crear un nuevo nodo y agregar datos a la variable "D" de una nueva. La declaración de Cout nos muestra que llamaremos a la función "show" para mostrar todos los nodos que hemos agregado.

Ahora, es hora de compilar este código C ++ en el compilador G ++ de Ubuntu para el lenguaje C ++. Al ejecutar el código con "./a.fuera ", se nos ha mostrado con los datos de 4 nodos en orden opuesto I.mi., Hemos agregado en el pedido 4, 12, 2, 7 y regresa en 7, 2, 12, 4, mostrando el último orden de primer servicio.

Ejemplo 02:

Veamos otro ejemplo de una lista doblemente vinculada. Creó una estructura "nodo" con la misma variable "d", siguiente nodo "n" y nodo anterior "P".

Ahora, hemos estado utilizando la función frontPush () para insertar un nodo al comienzo con sus datos i.mi. nodo. Hemos creado un nuevo nodo dentro de él.mi. "Newnode" utilizando la sintaxis de la estructura "nodo*". Después de esto, estamos haciendo referencia a sus datos "D", su próximo nodo que será una "cabeza" y el nodo anterior que será nulo. La instrucción "if 'se usó para verificar que el valor de la cabeza no sea nulo. Si la cabeza ya no está "nula", tenemos que hacer de la cabeza anterior un nuevo nodo, y el encabezado apuntará hacia el nuevo nodo.

La función AfterPush () está aquí para insertar un nuevo nodo después de nuestro nodo ya hecho. La instrucción "IF" verificará si el nodo anterior es igual a NULL o no y lo mostrará usando el "Cout". Se ha formado un nuevo nodo y se insertarán datos en "D". El "próximo" de la nueva voluntad se convertirá en el próximo de los anteriores, y el próximo de los anteriores se convertirá en un nuevo nodo. El anterior de nuevo se convertirá en el anterior en sí mismo. Si el nuevo de nuevo no es igual a NULL, haremos el nuevo de los nuevos, que también es nuevo, un nuevo nodo.

Ahora, utilizaremos la función "Endpush" para insertar un nuevo nodo al final de una lista vinculada. Se ha creado el nuevo nodo y los datos pasados ​​por Main () se asignan a "D" y lo nuevo es NULL. Hemos estado almacenando la cabeza temporalmente. El "IF" verificará si la lista vinculada está vacía y hará que el nuevo nodo "Cabeza". El "while" atravesará la lista vinculada si la lista vinculada ya no está vacía. Como la "temperatura" es nuestro último nodo, hemos asignado la próxima temperatura a "nueva". El anterior de nuevo se asigna a "temperatura".

El método Delete () está utilizando diferentes declaraciones "IF" para intercambiar a continuación y anterior a Del-Node, y Head Node. Por último, la función "libre" se usa para liberar la memoria de un nodo del.

La función show () de este programa se usa nuevamente para imprimir la lista doblemente vinculada.

La función main () comienza a ejecutar inicializando el nodo head a nulo. Se requiere que la función "endpush" insertar un nodo al final pasando "cabeza" y 5 como datos. FrontPush () se usa dos veces para agregar un nodo en la parte delantera de la lista vinculada. Después del uso "Endpush ()" nuevamente, hemos usado "AfterPush ()" dos veces. Las funciones Show () y "Delete ()" se usan una tras otra, mientras que el "Eliminar" se usa para eliminar cada último nodo de la lista vinculada, y Show () muestra que.

La compilación y la ejecución muestran la lista de inicio a finalizar la lista I.mi., Después de cada eliminación de nodo.

Conclusión

Este artículo está explicando los ejemplos de código simple para crear una lista doblemente vinculada en C ++ mientras usa el Ubuntu 20.04 Sistema Linux. También hemos echado un vistazo a las formas de insertar un nodo al comienzo y al final de la lista vinculada e insertar después de un nodo ya hecho I.mi., entre. La función Eliminar era eliminar cada nodo cada vez de la lista vinculada.