typestar

Una lista doblemente enlazada en C

Dos punteros por nodo: insertar y quitar no requieren recorrido.

#include <stdlib.h>

typedef struct Node {
    int value;
    struct Node *prev;
    struct Node *next;
} Node;

Node *push_front(Node *head, int value) {
    Node *node = malloc(sizeof *node);
    if (node == NULL) {
        return head;
    }
    node->value = value;
    node->prev = NULL;
    node->next = head;
    if (head != NULL) {
        head->prev = node;
    }
    return node;
}

Node *unlink_node(Node *head, Node *node) {
    if (node->prev != NULL) {
        node->prev->next = node->next;
    } else {
        head = node->next;
    }
    if (node->next != NULL) {
        node->next->prev = node->prev;
    }
    free(node);
    return head;
}

Cómo funciona

  1. Cada nodo conoce a su predecesor y a su sucesor.
  2. Quitar un nodo conecta a sus vecinos entre sí.
  3. Los casos de cabeza y cola son los que se rompen.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
34
Caracteres a escribir
545
Tokens
181
Ritmo de tres estrellas
100 tpm

Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 109 segundos.

Escribe este fragmento

Paso 2 de 5 en Listas y pilas; paso 7 de 20 en Estructuras de datos y algoritmos.

← Anterior Siguiente →