C言語での双方向連結リストの実装方法


まず、双方向連結リストの要素を表す構造体を定義します。

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

次に、双方向連結リストを操作するための関数を実装します。

  1. 双方向連結リストの先頭に要素を追加する関数(push関数)
void push(Node headRef, int newData) {
    Node* newNode = (Node*)malloc(sizeof(Node));
    newNode->data = newData;
    newNode->prev = NULL;
    newNode->next = (*headRef);
    if ((*headRef) != NULL)
        (*headRef)->prev = newNode;
    (*headRef) = newNode;
}
  1. 双方向連結リストから要素を削除する関数(deleteNode関数)
void deleteNode(Node headRef, Node* delNode) {
    if (*headRef == NULL || delNode == NULL)
        return;
    if (*headRef == delNode)
        *headRef = delNode->next;
    if (delNode->next != NULL)
        delNode->next->prev = delNode->prev;
    if (delNode->prev != NULL)
        delNode->prev->next = delNode->next;
    free(delNode);
}

以上のコード例では、push関数を使用して双方向連結リストの先頭に要素を追加し、deleteNode関数を使用して指定された要素を削除する方法を示しています。これらの関数を適切に組み合わせることで、双方向連結リストを作成し、要素を追加・削除できます。

このコード例はシンプルな実装であり、双方向連結リストの基本的な操作をカバーしています。もちろん、他にも様々な操作や機能を追加することができます。