teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

表現変更

2019/12/30 08:59

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -1,5 +1,5 @@
1
1
  確認に使用している showList が正常に動作致しません.
2
- テストされた形跡がコメントにありますが, 不十分です.
2
+ テストされた形跡がコメントにありますが,「データが1件の場合」に表示されるかをテストされていません.
3
3
 
4
4
  ```c
5
5
  #include <stdio.h>

2

コードを変更

2019/12/30 08:59

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -1,14 +1,78 @@
1
1
  確認に使用している showList が正常に動作致しません.
2
- テストされた形跡がコメントにありますが, 不十分です.
2
+ テストされた形跡がコメントにありますが, 不十分です.
3
- 0 件の場合, 1件の場合, 2件以上の場合等でご確認ください.
4
3
 
5
4
  ```c
5
+ #include <stdio.h>
6
+ #include <stdlib.h>
7
+
8
+ typedef struct LISTNODE {
9
+ int data;
10
+ struct LISTNODE *pNext;
11
+ } ListNode;
12
+
13
+ ListNode rootNode;
14
+
15
+ int addNode(int num, int val){
16
+ /*write your program.*/
17
+ ListNode *node, *pNewNode;
18
+ for(node=&rootNode; node!=NULL; node=node->pNext) {
19
+ if(--num == 0) {
20
+ pNewNode = (ListNode *)malloc(sizeof(ListNode));
21
+ pNewNode->data = val;
22
+ pNewNode->pNext = node->pNext;
23
+ node->pNext = pNewNode;
24
+ return 1;
25
+ }
26
+ }
27
+ return 0;
28
+ }
29
+
6
30
  void showList(void) {
7
31
  /*write your program.*/
8
32
  ListNode *node;
33
+ printf("showList:");
9
34
  for(node=rootNode.pNext; node!=NULL; node=node->pNext) {
10
35
  printf(" %d", node->data);
11
36
  }
12
37
  printf("\n");
13
38
  }
39
+
40
+ void freeList(void) {
41
+ ListNode *node, *tmp;
42
+ for(node=rootNode.pNext; node!=NULL; ) {
43
+ tmp = node;
44
+ node = node->pNext;
45
+ free(tmp);
46
+ }
47
+ }
48
+
49
+ int main(void) {
50
+ rootNode.data = 0;
51
+ rootNode.pNext = NULL;
52
+
53
+ showList();
54
+ printf("addNode: return=%d\n", addNode(1,10));
55
+ showList();
56
+ printf("addNode: return=%d\n", addNode(1,20));
57
+ showList();
58
+ printf("addNode: return=%d\n", addNode(2,30));
59
+ showList();
60
+ printf("addNode: return=%d\n", addNode(5,40));
61
+ showList();
62
+
63
+ freeList();
64
+
65
+ return 0;
66
+ }
67
+ ```
68
+ ```text
69
+ showList:
70
+ addNode: return=1
71
+ showList: 10
72
+ addNode: return=1
73
+ showList: 20 10
74
+ addNode: return=1
75
+ showList: 20 30 10
76
+ addNode: return=0
77
+ showList: 20 30 10
14
78
  ```

1

コード追加

2019/12/30 08:55

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -1,3 +1,14 @@
1
1
  確認に使用している showList が正常に動作致しません.
2
2
  テストされた形跡がコメントにありますが, 不十分です.
3
- 0 件の場合, 1件の場合, 2件以上の場合等でご確認ください.
3
+ 0 件の場合, 1件の場合, 2件以上の場合等でご確認ください.
4
+
5
+ ```c
6
+ void showList(void) {
7
+ /*write your program.*/
8
+ ListNode *node;
9
+ for(node=rootNode.pNext; node!=NULL; node=node->pNext) {
10
+ printf(" %d", node->data);
11
+ }
12
+ printf("\n");
13
+ }
14
+ ```