シンプルな方法でCプログラムで逆順に表示する単方向連結リストを実装する


まず、以下のような構造体を使用して、単方向連結リストのノードを表現します。

#include <stdio.h>
#include <stdlib.h>
struct Node {
    int data;
    struct Node* next;
};

次に、以下の関数を使用して、単方向連結リストを作成します。

void insert(struct Node head, int data) {
    struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
    newNode->data = data;
    newNode->next = *head;
    *head = newNode;
}

この関数は、新しいノードを作成し、データを設定し、現在のヘッドの次に設定します。そして、新しいノードを新しいヘッドとして設定します。

以下の関数を使用して、単方向連結リストを逆順に表示します。

void displayReverse(struct Node* head) {
    if (head == NULL) {
        return;
    }
    displayReverse(head->next);
    printf("%d ", head->data);
}

この関数は再帰的に呼び出され、リストの最後のノードに到達するまで再帰的に呼び出されます。そして、リストを後ろから前に向かって表示します。

最後に、メイン関数を作成し、これらの関数を使用して単方向連結リストを作成し、逆順に表示します。

int main() {
    struct Node* head = NULL;
    // ノードの挿入
    insert(&head, 3);
    insert(&head, 2);
    insert(&head, 1);
    // 逆順に表示
    printf("リストを逆順に表示: ");
    displayReverse(head);
    return 0;
}

上記のプログラムをコンパイルして実行すると、以下のような結果が得られます。

リストを逆順に表示: 1 2 3

このように、シンプルなCプログラムを使用して、単方向連結リストを逆順に表示することができます。この方法を使用すると、任意の数の要素を持つリストを逆順に表示することができます。