回答編集履歴

3

表現変更

2019/12/30 08:59

投稿

jimbe
jimbe

スコア12632

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

2

コードを変更

2019/12/30 08:59

投稿

jimbe
jimbe

スコア12632

test CHANGED
@@ -1,18 +1,68 @@
1
1
  確認に使用している showList が正常に動作致しません.
2
2
 
3
- テストされた形跡がコメントにありますが, 不十分です.
3
+ テストされた形跡がコメントにありますが, 不十分です.
4
-
5
- 0 件の場合, 1件の場合, 2件以上の場合等でご確認ください.
6
4
 
7
5
 
8
6
 
9
7
  ```c
8
+
9
+ #include <stdio.h>
10
+
11
+ #include <stdlib.h>
12
+
13
+
14
+
15
+ typedef struct LISTNODE {
16
+
17
+ int data;
18
+
19
+ struct LISTNODE *pNext;
20
+
21
+ } ListNode;
22
+
23
+
24
+
25
+ ListNode rootNode;
26
+
27
+
28
+
29
+ int addNode(int num, int val){
30
+
31
+ /*write your program.*/
32
+
33
+ ListNode *node, *pNewNode;
34
+
35
+ for(node=&rootNode; node!=NULL; node=node->pNext) {
36
+
37
+ if(--num == 0) {
38
+
39
+ pNewNode = (ListNode *)malloc(sizeof(ListNode));
40
+
41
+ pNewNode->data = val;
42
+
43
+ pNewNode->pNext = node->pNext;
44
+
45
+ node->pNext = pNewNode;
46
+
47
+ return 1;
48
+
49
+ }
50
+
51
+ }
52
+
53
+ return 0;
54
+
55
+ }
56
+
57
+
10
58
 
11
59
  void showList(void) {
12
60
 
13
61
  /*write your program.*/
14
62
 
15
63
  ListNode *node;
64
+
65
+ printf("showList:");
16
66
 
17
67
  for(node=rootNode.pNext; node!=NULL; node=node->pNext) {
18
68
 
@@ -24,4 +74,82 @@
24
74
 
25
75
  }
26
76
 
77
+
78
+
79
+ void freeList(void) {
80
+
81
+ ListNode *node, *tmp;
82
+
83
+ for(node=rootNode.pNext; node!=NULL; ) {
84
+
85
+ tmp = node;
86
+
87
+ node = node->pNext;
88
+
89
+ free(tmp);
90
+
91
+ }
92
+
93
+ }
94
+
95
+
96
+
97
+ int main(void) {
98
+
99
+ rootNode.data = 0;
100
+
101
+ rootNode.pNext = NULL;
102
+
103
+
104
+
105
+ showList();
106
+
107
+ printf("addNode: return=%d\n", addNode(1,10));
108
+
109
+ showList();
110
+
111
+ printf("addNode: return=%d\n", addNode(1,20));
112
+
113
+ showList();
114
+
115
+ printf("addNode: return=%d\n", addNode(2,30));
116
+
117
+ showList();
118
+
119
+ printf("addNode: return=%d\n", addNode(5,40));
120
+
121
+ showList();
122
+
123
+
124
+
125
+ freeList();
126
+
127
+
128
+
129
+ return 0;
130
+
131
+ }
132
+
27
133
  ```
134
+
135
+ ```text
136
+
137
+ showList:
138
+
139
+ addNode: return=1
140
+
141
+ showList: 10
142
+
143
+ addNode: return=1
144
+
145
+ showList: 20 10
146
+
147
+ addNode: return=1
148
+
149
+ showList: 20 30 10
150
+
151
+ addNode: return=0
152
+
153
+ showList: 20 30 10
154
+
155
+ ```

1

コード追加

2019/12/30 08:55

投稿

jimbe
jimbe

スコア12632

test CHANGED
@@ -3,3 +3,25 @@
3
3
  テストされた形跡がコメントにありますが, 不十分です.
4
4
 
5
5
  0 件の場合, 1件の場合, 2件以上の場合等でご確認ください.
6
+
7
+
8
+
9
+ ```c
10
+
11
+ void showList(void) {
12
+
13
+ /*write your program.*/
14
+
15
+ ListNode *node;
16
+
17
+ for(node=rootNode.pNext; node!=NULL; node=node->pNext) {
18
+
19
+ printf(" %d", node->data);
20
+
21
+ }
22
+
23
+ printf("\n");
24
+
25
+ }
26
+
27
+ ```