私は、次の構造体作成する場合:Cはどのようにポインタが二重リンクリストで動作するのですか?
typedef struct node {
int a;
char b[100][15];
struct node *prev;
struct node *next;
} Scope;
は私head_nodeを初期化するために、ポインタを使用する必要がありますか?現在、これは私の初期化関数である:いくつかの機能で
Scope initScope() {
Scope head;
head.a = 1;
head.prev = NULL;
head.next = NULL;
return head;
}
私は
Scope head = initScope();
を言うとこれはこれまでのところ私には大丈夫そうですが、私は新しいノードを作成するかどうかはわかりません。私はScope型のポインタが必要であると推測しています。 Scopeのサイズをmallocしてから、その値を初期化する必要があります。頭を作るときも同じことをするべきですか?私が答えようとしている根本的な問題は、ここでポインタの目的は何ですか?私の構造体の定義の中で、私は
*Scope
代わりの
Scope
を書いていた場合はどう?私はノードを作成するためにポインタを使用する必要がある場合、なぜ構造体をポインタにしないのですか?私の理解から、ポインタを使ってメモリを操作できるようになりました。ノードを作成して移動するときに残されるのは何ですか?
私はノードを作成するためのポインタを使用していますか?最初のノードにはヌルポインタがあり、その後のすべてのノードは次のポインタにリンクされますか?だから、私は構造体を使って特定のサイズのメモリブロックを割り当てていますか? – Pareod
ポインタがオブジェクトを指しています。私はあなたが何を意味するのか分かりません*ノードを作成するためのポインタを使用していますか?*ノードが1つだけの場合、それは 'next'と' prev'メンバーはNULLになります。さもなければ、彼らはしません。はい、特定のサイズのメモリブロックを割り当てるために 'struct'を使用しています。 –
私は、 'int = 5'というより、' int * ptr = malloc(sizeof(int));と言っています。 &ptr = 5; '本質的に私はsize intのメモリを切り離しています。このアイデアをリンクリストに適用すると、私はそれをこのようにする必要があります。そうしないと、すべてのノードに固有の変数名を持つことになります。あるいは、それぞれに固有のインデックスを持つノードの配列を持っていますか?なぜ私は頭の後にノード用のポインタを使う必要があるのか理解し始めていると思います。 – Pareod