回答編集履歴
2
イメージを追加
test
CHANGED
@@ -33,3 +33,13 @@
|
|
33
33
|
- dlistってdlnode*ですよね。ノードだと思うんですが、それを解放しちゃっていいのか?というのがfree(d2)の悪そうな点です。
|
34
34
|
|
35
35
|
- delete()は、その前に接続しなおしの処理があるのに、あらためてやることあるのかな?というのが悪そうな点です。
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
###変数やメンバ変数と、その中身のイメージ
|
40
|
+
|
41
|
+
きったない絵であれですが。
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
![イメージ説明](2cf10d32db26d14224c6badab18400c6.png)
|
1
コメントを追加しました。
test
CHANGED
@@ -12,11 +12,17 @@
|
|
12
12
|
|
13
13
|
void delete(dllist p) {
|
14
14
|
|
15
|
-
p->prev->next = p->next;
|
15
|
+
p->prev->next = p->next; // (4のノード).next = (3のノード)
|
16
16
|
|
17
|
-
|
17
|
+
// つまり、 (2)(4)(1)(3) が、(2)←→(4)←→(3) となります。
|
18
18
|
|
19
|
+
// ↑ ↑
|
20
|
+
|
21
|
+
// (1)---┘
|
22
|
+
|
23
|
+
p->next->prev = p->prev; // ここもおかしくなります。
|
24
|
+
|
19
|
-
free(p);
|
25
|
+
free(p); // (1のノード)のメモリを解放する
|
20
26
|
|
21
27
|
}
|
22
28
|
|