質問編集履歴
1
新しい問題が発生したのでその説明の追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -8,13 +8,69 @@
|
|
8
8
|
|
9
9
|
|
10
10
|
|
11
|
+
[追記]
|
12
|
+
|
13
|
+
Segmentation faultは解決したのですが, 実行の度に登録したデータの数が異なります.
|
14
|
+
|
15
|
+
なぜでしょうか?
|
16
|
+
|
17
|
+
|
18
|
+
|
11
19
|
###発生している問題・エラーメッセージ
|
12
20
|
|
13
21
|
|
14
22
|
|
15
23
|
```
|
16
24
|
|
25
|
+
0
|
26
|
+
|
27
|
+
1
|
28
|
+
|
29
|
+
2
|
30
|
+
|
31
|
+
3
|
32
|
+
|
33
|
+
4
|
34
|
+
|
35
|
+
5
|
36
|
+
|
37
|
+
6
|
38
|
+
|
39
|
+
7
|
40
|
+
|
41
|
+
8
|
42
|
+
|
43
|
+
9
|
44
|
+
|
45
|
+
10
|
46
|
+
|
17
|
-
|
47
|
+
11
|
48
|
+
|
49
|
+
12
|
50
|
+
|
51
|
+
13
|
52
|
+
|
53
|
+
14
|
54
|
+
|
55
|
+
15
|
56
|
+
|
57
|
+
16
|
58
|
+
|
59
|
+
19
|
60
|
+
|
61
|
+
```
|
62
|
+
|
63
|
+
```
|
64
|
+
|
65
|
+
0
|
66
|
+
|
67
|
+
1
|
68
|
+
|
69
|
+
2
|
70
|
+
|
71
|
+
3
|
72
|
+
|
73
|
+
19
|
18
74
|
|
19
75
|
```
|
20
76
|
|
@@ -30,7 +86,7 @@
|
|
30
86
|
|
31
87
|
#include<time.h>
|
32
88
|
|
33
|
-
#define N
|
89
|
+
#define N 20
|
34
90
|
|
35
91
|
#define SUCCESS 1
|
36
92
|
|
@@ -94,6 +150,20 @@
|
|
94
150
|
|
95
151
|
|
96
152
|
|
153
|
+
/*
|
154
|
+
|
155
|
+
void treePrint(node_t *ndPtr) //データ内容の表示
|
156
|
+
|
157
|
+
{
|
158
|
+
|
159
|
+
while (ndPtr != NULL) {
|
160
|
+
|
161
|
+
printf("%d\n", ndPtr->data);
|
162
|
+
|
163
|
+
*/
|
164
|
+
|
165
|
+
|
166
|
+
|
97
167
|
//データを3分木に挿入, **ndPtrPtr : ルートのポインタのポインタ
|
98
168
|
|
99
169
|
int insert_data(data_t dt, node_t **ndPtrPtr)
|
@@ -116,17 +186,19 @@
|
|
116
186
|
|
117
187
|
|
118
188
|
|
189
|
+
srand((unsigned)time(NULL)); //一桁の乱数生成
|
190
|
+
|
191
|
+
|
192
|
+
|
119
193
|
while(1) {
|
120
194
|
|
121
195
|
int r;
|
122
196
|
|
123
|
-
srand((unsigned)time(NULL)); //一桁の乱数生成
|
124
|
-
|
125
197
|
r = rand() % 10;
|
126
198
|
|
127
199
|
|
128
200
|
|
129
|
-
if (r == 0) *ndPtrPtr = (*ndPtrPtr)->left
|
201
|
+
if (r == 0) *ndPtrPtr = (*ndPtrPtr)->left; //0.1の確率で左の子を指す
|
130
202
|
|
131
203
|
else if (1 <= r && r <= 8) ndPtrPtr = &((*ndPtrPtr)->mid); //0.8の確率で真ん中の子を指す
|
132
204
|
|
@@ -150,7 +222,9 @@
|
|
150
222
|
|
151
223
|
|
152
224
|
|
153
|
-
|
225
|
+
//行きがけ順で登録データの個数を確認
|
226
|
+
|
227
|
+
void preOrder(node_t *ndPtr)
|
154
228
|
|
155
229
|
{
|
156
230
|
|
@@ -172,7 +246,7 @@
|
|
172
246
|
|
173
247
|
{
|
174
248
|
|
175
|
-
node_t *root;
|
249
|
+
node_t *root = NULL;
|
176
250
|
|
177
251
|
int i;
|
178
252
|
|
@@ -194,4 +268,6 @@
|
|
194
268
|
|
195
269
|
}
|
196
270
|
|
271
|
+
|
272
|
+
|
197
|
-
```
|
273
|
+
```
|