質問編集履歴

1

質問のおかげで一歩前進した\?

2016/04/22 09:01

投稿

awellbottom
awellbottom

スコア14

test CHANGED
File without changes
test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  ###発生している問題・エラーメッセージ
10
10
 
11
- プログラ終了ない上に何も起きない
11
+ メントエ発生てしまう
12
12
 
13
13
 
14
14
 
@@ -16,7 +16,9 @@
16
16
 
17
17
  エラーメッセージ
18
18
 
19
+
20
+
19
- ./a.out
21
+ ./a.out
20
22
 
21
23
  中置記法で入力する文字列の文字個数を指定してください:13
22
24
 
@@ -48,17 +50,11 @@
48
50
 
49
51
  s[12]:F
50
52
 
51
-
52
-
53
-
54
-
55
-
56
-
57
-
58
-
59
-
60
-
61
- ^C
53
+ セグメントエラー
54
+
55
+
56
+
57
+
62
58
 
63
59
 
64
60
 
@@ -70,8 +66,6 @@
70
66
 
71
67
 
72
68
 
73
-
74
-
75
69
  #include<stdio.h>
76
70
 
77
71
  #include<stdlib.h>
@@ -184,134 +178,134 @@
184
178
 
185
179
  {
186
180
 
181
+ node_type *temp=*pp;
182
+
183
+ while (temp != NULL) {
184
+
185
+ temp = (temp)->next;
186
+
187
+ }
188
+
189
+ return(temp->data);
190
+
191
+ }
192
+
193
+
194
+
195
+
196
+
197
+
198
+
199
+ int is_empty(node_type *p) { /* 空スタックのとき真、 そうでないならば偽を返す */
200
+
201
+ if (p == NULL) return TRUE; /* 空スタックのとき */
202
+
203
+ else return FALSE; /* 空スタックでないとき */
204
+
205
+ }
206
+
207
+
208
+
209
+
210
+
211
+
212
+
213
+
214
+
215
+ //スタックの先頭ノードの削除
216
+
217
+ int pop(node_type **pp)
218
+
219
+ {
220
+
187
221
  node_type *temp;
188
222
 
189
- while (*pp != NULL) {
223
+ if (*pp != NULL) {
190
224
 
191
225
  temp = (*pp)->next;
192
226
 
227
+ free(*pp); /* メモリの解放 */
228
+
229
+ *pp = temp;
230
+
231
+ return SUCCESS;
232
+
193
233
  }
194
234
 
195
- return(temp->data);
235
+ else return FAILURE;
196
-
236
+
197
- }
237
+ }
198
-
199
-
200
-
201
-
202
-
203
-
204
-
205
- int is_empty(node_type *p) { /* 空スタックのとき真、 そうでないならば偽を返す */
238
+
206
-
207
- if (p == NULL) return TRUE; /* 空スタックのとき */
239
+
208
-
209
- else return FALSE; /* 空スタックでないとき */
240
+
210
-
211
- }
241
+
212
-
213
-
214
-
215
-
216
-
217
-
218
-
219
-
220
-
242
+
221
- //スタックの先頭ノードの削除
243
+ //スタックの先頭へのノードの挿入
222
-
244
+
223
- int pop(node_type **pp)
245
+ int push(node_type **pp, data_type x)
224
246
 
225
247
  {
226
248
 
227
- node_type *temp;
249
+ node_type *temp;
228
-
229
- if (*pp != NULL) {
250
+
230
-
231
- temp = (*pp)->next;
251
+ temp = new_node(x, pp);
232
-
252
+
233
- free(*pp); /* メモリの解放 */
253
+ if (temp == NULL) return FAILURE;
234
-
254
+
235
- *pp = temp;
255
+ *pp = temp;
236
-
256
+
237
- return SUCCESS;
257
+ return SUCCESS;
238
-
258
+
239
- }
259
+ }
260
+
261
+
262
+
263
+
264
+
265
+
266
+
240
-
267
+ int prior(data_type s){
268
+
269
+
270
+
271
+ if(s=('A' || 'B' || 'C' || 'D' || 'E' || 'F' ||'G'))
272
+
241
- else return FAILURE;
273
+ return 5;
274
+
242
-
275
+ if(s='=')
276
+
277
+ return 0;
278
+
279
+ if(s='(')
280
+
281
+ return 4;
282
+
283
+ if(s=')')
284
+
285
+ return 1;
286
+
287
+ if(s='+'||'-')
288
+
289
+ return 2;
290
+
291
+ if (s='*'||'/')
292
+
293
+ return 3;
294
+
295
+
296
+
243
- }
297
+ }
244
-
245
-
246
-
247
-
248
-
298
+
299
+
300
+
301
+
302
+
249
- //スタックの先頭挿入
303
+ //スタックの先頭の取得
250
-
304
+
251
- int push(node_type **pp, data_type x)
305
+ data_type top(node_type *p)
252
306
 
253
307
  {
254
308
 
255
- node_type *temp;
256
-
257
- temp = new_node(x, pp);
258
-
259
- if (temp == NULL) return FAILURE;
260
-
261
- *pp = temp;
262
-
263
- return SUCCESS;
264
-
265
- }
266
-
267
-
268
-
269
-
270
-
271
-
272
-
273
- int prior(data_type s){
274
-
275
-
276
-
277
- if(s=('A' || 'B' || 'C' || 'D' || 'E' || 'F' ||'G'))
278
-
279
- return 5;
280
-
281
- if(s='=')
282
-
283
- return 0;
284
-
285
- if(s='(')
286
-
287
- return 4;
288
-
289
- if(s=')')
290
-
291
- return 1;
292
-
293
- if(s='+'||'-')
294
-
295
- return 2;
296
-
297
- if (s='*'||'/')
298
-
299
- return 3;
300
-
301
-
302
-
303
- }
304
-
305
-
306
-
307
-
308
-
309
- //スタックの先頭のデータの取得
310
-
311
- data_type top(node_type *p)
312
-
313
- {
314
-
315
309
  if (p == NULL) /* 空スタックのとき */
316
310
 
317
311
  return ('\0');
@@ -324,7 +318,7 @@
324
318
 
325
319
 
326
320
 
327
-
321
+
328
322
 
329
323
 
330
324
 
@@ -350,52 +344,52 @@
350
344
 
351
345
  }
352
346
 
347
+
348
+
349
+ for(i=0;i<n;i++){
350
+
351
+ printf("s[%d]:%c\n",i,s[i]);
352
+
353
+ }
354
+
355
+ printf("hello");
356
+
357
+
358
+
359
+ initialize(&head);
360
+
361
+ new_node(s[0],&head);
362
+
363
+
364
+
365
+
366
+
367
+ printf("hello");
368
+
369
+ for(i=1;i<n;i++){
370
+
371
+ if(prior(top(head))<prior(s[i])){
372
+
373
+ new_node(s[i], &head);
374
+
375
+ }
376
+
377
+ if(prior(top(head))>=prior(s[i])){
378
+
379
+ p[j]=last_node(&head);
380
+
381
+ j++;
382
+
383
+ }
384
+
385
+ }
386
+
387
+ for(i=0;i<j;i++){
388
+
353
389
  printf("%c",p[i]);
354
390
 
355
- for(i=0;i<n;i++){
356
-
357
- printf("s[%d]:%c\n",i,s[i]);
358
-
359
- }
360
-
361
-
362
-
363
- printf("hello");
364
-
365
- initialize(&head);
366
-
367
- new_node(s[0],&head);
368
-
369
-
370
-
371
-
372
-
373
- printf("hello");
374
-
375
- for(i=1;i<n;i++){
376
-
377
- if(prior(top(head))<prior(s[i])){
378
-
379
- new_node(s[i], &head);
380
-
381
391
  }
382
392
 
383
- if(prior(top(head))>=prior(s[i])){
384
-
385
- p[j]=last_node(&head);
386
-
387
- j++;
388
-
389
- }
390
-
391
- }
392
-
393
- for(i=0;i<j;i++){
394
-
395
- printf("%c",p[i]);
396
-
397
- }
398
-
399
393
 
400
394
 
401
395
  return 0;
@@ -410,6 +404,8 @@
410
404
 
411
405
 
412
406
 
407
+
408
+
413
409
  ###試したこと
414
410
 
415
411