c - 配列 - matlab while




forループを使用したリンクリストの作成 (2)

ここに私の構造体です

struct ListItem{

    int data;
    struct ListItem *next;

};

リンクされたリストの最初のノードがdata = 0を持つと仮定すると、サイズ5のリンクされたリストを作成するforループを作成したいが、どうやって作業するのか分からない

私は以下を試した

int main(int argc, char* argv[]){

    struct ListItem a;
    a.data = 0;


    for (int i = 1; i < 5; i++){
        struct ListItem *pointer = &a;
        struct ListItem nextnode;
        nextnode.data = i;
        a.next = &nextnode;
        pointer = pointer->next;

    }
}

しかし結果はa.data = 0とa.next-> data = 4です。


aを変更しないでください。 aとして始まる一時ノードを取る。 新しいノードの次のポイントにして、一時ノードを新しいノードに設定します。 また、ヒープで動的に割り当てます。 それ以外の場合は、ループ実行ごとにメモリが解放されます。


struct ListItem a[5] = { {0, NULL}};
struct ListItem *pointer = &a[0];

for (int i = 0; i < 5; i++){
    a[i].data = i;
    if(i != 5 -1)
        a[i].next = &a[i+1];
}




singly-linked-list