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

質問編集履歴

3

見出しも追加しました。

2017/10/21 03:00

投稿

tomokon
tomokon

スコア13

title CHANGED
File without changes
body CHANGED
@@ -29,9 +29,9 @@
29
29
  }
30
30
 
31
31
  ```
32
-
32
+ ###関連するソースコード
33
33
  ```
34
- ノードの定義や、ノードを作成、リストを表示する関数も付記します。
34
+ ノードの定義や、ノードを作成、リストを表示する関数も付記します。
35
35
  ●ノードの定義
36
36
  typedef int data_t;
37
37
  typedef struct nodetag

2

問題のあるコードと、関連コードとを分割して表示するようにしました。

2017/10/21 03:00

投稿

tomokon
tomokon

スコア13

title CHANGED
File without changes
body CHANGED
@@ -28,6 +28,9 @@
28
28
  }
29
29
  }
30
30
 
31
+ ```
32
+
33
+ ```
31
34
  *ノードの定義や、ノードを作成、リストを表示する関数も付記します。
32
35
  ●ノードの定義
33
36
  typedef int data_t;

1

```でソースコードを閉じ、インシデントを表示するようにしました。

2017/10/21 02:58

投稿

tomokon
tomokon

スコア13

title CHANGED
File without changes
body CHANGED
@@ -6,83 +6,86 @@
6
6
  現在のソースコードでは、例えばリストが{123}であれば{321}と表示したいのに{1}とだけ表示されてしまいます。
7
7
 
8
8
  ###該当のソースコード
9
+
9
- ```C
10
+ ```lang-C
10
- node_t nodeReverse(node_t **ndPtrPtr)
11
+ node_t nodeReverse(node_t **ndPtrPtr)
11
12
  {
12
- int i = 0;
13
+ int i = 0;
13
- node_t *Pro_ptr1;
14
+ node_t *Pro_ptr1; 
14
-   node_t *Pro_ptr2;
15
+ node_t *Pro_ptr2; 
15
- while(*ndPtrPtr != NULL){
16
+ while(*ndPtrPtr != NULL){
16
- if(i == 0){
17
+ if(i == 0){
17
- Pro_ptr1 = *ndPtrPtr;
18
+ Pro_ptr1 = *ndPtrPtr;        
18
- ndPtrPtr = &((*ndPtrPtr) -> next);
19
+ ndPtrPtr = &((*ndPtrPtr) -> next);
19
- Pro_ptr1 -> next = NULL;
20
+ Pro_ptr1 -> next = NULL;
20
- }else if(i != 0){
21
+ }else if(i != 0){
21
- Pro_ptr2 = *ndPtrPtr;
22
+ Pro_ptr2 = *ndPtrPtr;
22
- ndPtrPtr = &((*ndPtrPtr) -> next);
23
+ ndPtrPtr = &((*ndPtrPtr) -> next);
23
- Pro_ptr2 -> next = Pro_ptr1;
24
+ Pro_ptr2 -> next = Pro_ptr1;        
24
- Pro_ptr1 = Pro_ptr2;
25
+ Pro_ptr1 = Pro_ptr2;
25
- }
26
+ }   
26
- i++;
27
+ i++;
27
28
  }
28
- }
29
+ }
29
30
 
30
31
  *ノードの定義や、ノードを作成、リストを表示する関数も付記します。
31
32
  ●ノードの定義
32
- typedef int data_t;
33
+ typedef int data_t;
33
-
34
- typedef struct nodetag
34
+ typedef struct nodetag
35
35
  {
36
- data_t data;
36
+ data_t data;
37
- struct nodetag *next;
37
+ struct nodetag *next;
38
- }node_t;
38
+ }node_t;
39
39
 
40
40
  ●ノードの作成
41
- node_t *nodeNew(data_t dt, node_t *nxt)
41
+ node_t *nodeNew(data_t dt, node_t *nxt)
42
42
  {
43
- node_t *ndPtr;
43
+ node_t *ndPtr;
44
-
45
- ndPtr = malloc(sizeof(node_t));
44
+ ndPtr = malloc(sizeof(node_t));
46
- if(ndPtr == NULL){
45
+ if(ndPtr == NULL){
47
- return NULL;
46
+ return NULL;
48
47
  }else{
49
- ndPtr -> data = dt;
48
+ ndPtr -> data = dt;
50
- ndPtr -> next = nxt;
49
+ ndPtr -> next = nxt;
51
- return ndPtr;
50
+ return ndPtr;
52
51
  }
53
52
  }
54
-
53
+
55
54
  ●リストにノードを後から加える関数
56
- int nodeAppend(node_t **ndPtrPtr, data_t dt)
55
+ int nodeAppend(node_t **ndPtrPtr, data_t dt)
57
56
  {
58
- node_t *ndPtr;
57
+ node_t *ndPtr;
59
-
60
- ndPtr = nodeNew(dt, NULL);
58
+ ndPtr = nodeNew(dt, NULL);
61
- if(ndPtr == NULL){
59
+ if(ndPtr == NULL){
62
- return FAILURE;
60
+ return FAILURE;
63
61
  }
64
-
62
+
65
- while(*ndPtrPtr != NULL){
63
+ while(*ndPtrPtr != NULL){
66
- ndPtrPtr = &((*ndPtrPtr) -> next);
64
+ ndPtrPtr = &((*ndPtrPtr) -> next);    
67
65
  }
68
- *ndPtrPtr = ndPtr;
66
+ *ndPtrPtr = ndPtr;
69
- return SUCCESS;
67
+ return SUCCESS;
70
- }
68
+ }
71
69
 
72
70
  ●リストの表示
73
- void listPrint(node_t *ndPtr)
71
+ void listPrint(node_t *ndPtr)
74
72
  {
75
73
  printf("{");
76
- while(ndPtr != NULL){
74
+ while(ndPtr != NULL){
77
- printf("%d", ndPtr -> data);
75
+ printf("%d", ndPtr -> data);
78
- ndPtr = ndPtr -> next;
76
+ ndPtr = ndPtr -> next;
79
77
  }
80
78
  printf("}\n");
81
- }
79
+ }
80
+ ```
82
81
 
83
82
  ###試したこと
84
83
  ノードごとにある次のノードを示すポインタ変数、nextの値を変更するために、ポインタ変数を二つ作りました。
85
84
  現在いるノードのアドレスと一つ前のアドレスをそれぞれに格納。それらをそれぞれのノードのnextに逆順に格納していくことで、課題を実現しようとしました。
86
85
 
87
86
  ###補足情報(言語/FW/ツール等のバージョンなど)
88
- 使用開発環境:BCC Developer 1.2.21
87
+ 使用開発環境:BCC Developer 1.2.21
88
+
89
+ ###最後に
90
+ 機能をうまく活用できず、分かりにくい表示で最初投稿してしまいました。
91
+ 申し訳ありません。