C のリンク リスト内のノードを使用して何かを理解するのに苦労しています。紙に 6 つのノードのリストが与えられ、いくつかの異なるコマンド セットの後でノードがどのように変化するかを描こうとしています。リストは次のように始まります (ノードに名前が付けられている場合、その名前はその直前にリストされます)。
head[2, link]-->[4, link]-->P[6, link]-->[7,link]-->Q[8, link]-->R[9, link is null ]
コマンドの最初のセット:
R->link = Q;
head->item = 11;
P = P->link;
head[11, リンク]-->[4, リンク]-->[6, リンク]-->P[7,リンク]-->Q[8, リンク]-->R[9, リンク]- ->Q
これが私の最初の質問です: R->link を Q に割り当てた場合、それは自分自身の周りを Q ノードに向けるだけですか?
コマンドの 2 番目のセット:
P->item = head->item;
Q = NULL;
P = (P->link)->link;
head = R;
[11, リンク]-->[4, リンク]-->[6, リンク]-->[11,リンク]-->Q[NULL?]-->PR ヘッド[9, リンク]--> Qヌル?
2 番目の質問: Q ノードで null の値を正確に取るものは何ですか?? そのリンクは消えますか?P = (P->link)->link が null に設定された後、そのリンクに沿って移動するにはどうすればよいですか? Q が null になったので、R も何を指しているのでしょうか?
ノードを作成するための私のコードは次のとおりです。
#include <stdio.h>
#include <stdlib.h>
typedef int item_t;
typedef struct node node_t;
typedef node_t* pointer_t;
struct node{
item_t item;
pointer_t link;
};
int main(void){
pointer_t head, P, Q, R;
head = malloc(sizeof(node_t));
head->item = 2;