Tecnología

Inicio

Cómo crear una lista doblemente enlazada en C Programación

Cómo crear una lista doblemente enlazada en C Programación


Los programadores usan listas enlazadas como estructuras de datos linealmente desplazables. Esto significa que el programador puede empezar desde el principio de la lista (llamado cabeza) y avanzar a través de la lista de un elemento a la vez. Este método de almacenamiento de datos también permite al programador para agregar de manera eficiente datos a la lista, que ofrece una alternativa más versátil para ciertas otras estructuras de datos tales como matrices dinámicas. Este ejemplo muestra cómo construir un simple lista doblemente enlazada, lo que permite la navegación de la lista en dos direcciones (adelante y atrás).

Instrucciones

1 Cree la estructura de nodos que servirá como el tipo de datos de la lista enlazada. En el editor de texto, introduzca el siguiente código:

incluir <stdlib.h>

int main {

NodoLista struct {

int datos;

* puntal NodoLista anterior;

puntal NodoLista * siguiente;

};

return 0;

}

El bloque "estructura NodoLista" de código crea una plantilla para los artículos que llenarán la lista. Esta plantilla define una NodoLista contiene tres elementos: un elemento de datos (un entero) y referencias a los artículos anteriores y siguientes en la lista. Un puntero es una variable que contiene una dirección de memoria. Los punteros se utilizan para referirse a otras estructuras de datos en la memoria profunda y asignar dinámicamente la memoria durante la ejecución de código.

2 Declarar las variables que van a organizar la estructura de la lista. Insertar este código de ejemplo en el archivo de texto:

int size;

* NodoLista cabeza;

NodoLista * de cola;

cola = cabeza;

= cabeza de la cola;

Estos dos punteros son el comienzo y el final de la lista, respectivamente. El uso de estos punteros, el programador sabe dónde está el principio de la lista es y donde el objetivo es, simplemente comprobando si el nodo actual es la "cabeza" o puntero "cola". Ambos se remiten el uno al otro en el caso de una lista vacía.

3 Crear un algoritmo sencillo para añadir elementos de la lista enlazada. Siga este código de ejemplo:

void append (int num) {

struct NodoLista * trazador = cabeza;

struct NodoLista

newNode = (struct NodoLista) malloc (sizeof (struct NodoLista));

newNode-> Datos = num;

si (la cabeza == NULL) {

head = newNode;

cola = newNode;

newNode-> prev = cabeza;

newNode-> siguiente = cola;

}

más{

while (tracer->next != tail)

{Trazador = tracer-> siguiente;}

newNode-> prev = trazador;

newNode-> siguiente = cola;

tracer-> siguiente = nodo;

cola = nodo;

}

tamaño ++;

}

Este código añade un nodo al final de la lista. Se inicia mediante la creación de un puntero a la cabeza de la lista ( "trazador"). A continuación, se crea un puntero a un bloque de asignación dinámica de memoria reservada para un NodoLista de nueva creación (newNode) y establece los datos de ese nodo al número entero "num". Si los puntos de la cabeza a nulo (es decir, la lista está vacía, porque los puntos de la cabeza para nada), a continuación, el código inserta el nodo al principio de la lista. De lo contrario, los "ciclos", mientras que bucle a través de los nodos de la lista hasta llegar al último nodo. Cuando los puntos "trazadores" hasta el último elemento de la lista, el código inserta el nodo. El último comando añade al número entero "tamaño", hacer el seguimiento de los elementos de la lista.

4 Crear un algoritmo para eliminar y elemento de la final de la lista:

removeNode void () {

si (cola! = cabeza) {

struct NodoLista * Final = cola;

cola = maletero> ant;

libre (final);

tamaño--;

}

}

Este código crea un puntero ( "fin") hasta el último elemento de la lista (el elemento mismos "cola" puntos a). A continuación, la cola está ajustado para que apunte al elemento inmediatamente antes del último elemento (el nodo apuntado por el puntero "prev" del último elemento). Por último, la memoria utilizada por último nodo, se refiere por "terminar", se libera para su uso posterior.

Consejos y advertencias

  • Esto es sólo un esqueleto de una lista doblemente enlazada. Otra funcionalidad, como orden de los datos, la inserción en el medio de la lista, y la eliminación de la mitad de la lista, se puede añadir a esta funcionalidad básica.