質問編集履歴

2

修正

2020/05/21 02:55

投稿

rathi
rathi

スコア22

test CHANGED
File without changes
test CHANGED
@@ -59,3 +59,33 @@
59
59
  質問を追加させてください。
60
60
 
61
61
  グローバル変数は0で初期化されるのは分かりました。ただ、グローバルで定義したheadはNULLを指しているのですよね。それであればで先頭セルへの挿入は場合分けしなくても`new_cell->next = head`とすることで、`new_cell->next = NULL`にはなるのではないかと考えましたが、実際ダメみたいでした。場合分けして、わざわざ`new_cell->next = NULL;`とする必要がある理由説明していただきたいです。
62
+
63
+
64
+
65
+ ---------------------------------------------------------------
66
+
67
+
68
+
69
+
70
+
71
+ 以下の先頭セルの挿入する関数を以下のようにしたとき、動かずに質問していたのですが、今はなぜか場合分けせずとも動くようになっていました。この関数以外の他の場所が間違えていて動いていなかったかもしれません。
72
+
73
+ ```C
74
+
75
+ void insert_cell_top(int d){
76
+
77
+ CELL *new_cell;
78
+
79
+ new_cell = (CELL *)malloc(sizeof(CELL)); // 新しいセルnew_cell の作成
80
+
81
+ new_cell->data = d; // new_cell のデータ部= d
82
+
83
+ new_cell->next = head; // new_cell のポインタ部= head が指すセルのポインタ部
84
+
85
+ head = new_cell; // new_cellを先頭セルへ
86
+
87
+ }
88
+
89
+ ```
90
+
91
+ 解答してくれた方々、ありがとうございました。

1

質問の追加

2020/05/21 02:55

投稿

rathi
rathi

スコア22

test CHANGED
File without changes
test CHANGED
@@ -51,3 +51,11 @@
51
51
 
52
52
 
53
53
  headとセルの->nextは同じポインタなのに、どうしてheadの初期値はNULLで、セルの->nextはランダムになっているのでしょうか?教えていただきたいです。
54
+
55
+
56
+
57
+
58
+
59
+ 質問を追加させてください。
60
+
61
+ グローバル変数は0で初期化されるのは分かりました。ただ、グローバルで定義したheadはNULLを指しているのですよね。それであればで先頭セルへの挿入は場合分けしなくても`new_cell->next = head`とすることで、`new_cell->next = NULL`にはなるのではないかと考えましたが、実際ダメみたいでした。場合分けして、わざわざ`new_cell->next = NULL;`とする必要がある理由説明していただきたいです。