2016-04-02 2 views
1

Cでリンクリストを作成していますが、この問題が発生しました。次の文はわかりません。このフォームリストのリンクリスト/ポインタ

void reverse(reverse **list)`void reverse(reverse **list) 
{ 
    struct node * prev = NULL; 
    struct node * next; 
    struct node * current = list[0]; 
    while(current!= NULL) 
    { 
     next = current­>next; 
     current­>next = prev; 
     prev = current; 
     current = next ; 
    } 
    list[0] = prev; ­­­­­­­­­­­­­­­­­­­­­­­­­ 
} 

リストは、[0]どういう意味: ここに私のリンクリスト

typedef struct node { 
    int value; 
    struct node *next; 
} node; 

、ここでは私の構造は、私が働いているコードのですか?リンクされたリストの最初の要素ですか? 私の質問はばかばかしいようですが、私はどこでも答えを見つけることができません。

ありがとうございました。

+0

これは、配列とポインタが同じだと思う人からのリンクリストコードなので、難読化されたgungeを書いています。( –

+0

あなたの関数と構造体の型がどちらも ' –

答えて

2

list[0]は、最初のノードへのポインタであり、listは、そのポインタへのポインタです。

list[0]*(list+0)と同一であり、*(list)または*listと同一です。

これは構文が異なるだけで、listが配列を指しているわけではありません。

最初のノードへのポインタのアドレスは、reverse関数に渡されます。ポインタへのポインタは逆参照され(*list)、関数外の元のポインタが変更されます。あなたがしなかった場合、元のポインタは変更されず、もはやリストの先頭を指さなくなります。

関連する問題