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

質問編集履歴

10

修正

2019/03/22 06:20

投稿

apeirogon0813
apeirogon0813

スコア117

title CHANGED
File without changes
body CHANGED
@@ -13,8 +13,7 @@
13
13
 
14
14
  ググったのですが, ダブルポインタを用いた線形リストの参考になるサイトが見当たらなかったのでよろしくお願いいたします。
15
15
 
16
- ~~~~また, 例えば通常のポインタ *aであれば, aはaの指しているポインタ先のアドレスを示し, &aは自分のアドレスを示すことであると思うのですが,~~
16
+
17
- ~~ダブルポインタ **bの場合, bはポインタ先のポインタのアドレスかポインタのポインタ先のアドレスどちらを示しているのでしょうか?~~
18
17
  ![![](1d1ba4b11b22fff84c469da26fc68d75.png)
19
18
 
20
19
  ### 該当のソースコード
@@ -78,11 +77,13 @@
78
77
  ### 試したこと
79
78
  まず、"あ"と"い"は先頭が空リストの場合と値が昇順になることを考えて
80
79
 
80
+ ~~(p=NULL || data > p->data)~~
81
- (p=NULL || data > p->data)
81
+ (p=NULL || data < p->data)
82
82
 
83
83
  次の"う"と"え"は
84
84
 
85
+ ~~while(p->next != NULL && data < p->next->data)~~
85
- while(p->next != NULL && data < p->next->data)
86
+ while(p->next != NULL && data > p->next->data)
86
87
 
87
88
  でいいと思うのですが次の"か"と"き"を考える上でinsert2関数内の
88
89
  list **p = head_p;

9

修正

2019/03/22 06:20

投稿

apeirogon0813
apeirogon0813

スコア117

title CHANGED
File without changes
body CHANGED
@@ -88,7 +88,7 @@
88
88
  list **p = head_p;
89
89
  とありますが, このhead_pの値はリストの先頭のアドレスを指しているのでしょうか?
90
90
 
91
- **追記**間接メンバー"->"は選択演算*、アドレス演算&より優先順位が高いことを考慮して,
91
+ **追記: **間接メンバー"->"は選択演算*、アドレス演算&より優先順位が高いことを考慮して,
92
92
  "お"、"か"はそれぞれ
93
93
  while(*p != NULL && data < (*p)->data)
94
94
  であり、"き"は

8

修正

2019/03/22 06:18

投稿

apeirogon0813
apeirogon0813

スコア117

title CHANGED
File without changes
body CHANGED
@@ -88,8 +88,7 @@
88
88
  list **p = head_p;
89
89
  とありますが, このhead_pの値はリストの先頭のアドレスを指しているのでしょうか?
90
90
 
91
- **追記**
92
- 間接メンバー"->"は選択演算*、アドレス演算&より優先順位が高いことを考慮して,
91
+ **追記**間接メンバー"->"は選択演算*、アドレス演算&より優先順位が高いことを考慮して,
93
92
  "お"、"か"はそれぞれ
94
93
  while(*p != NULL && data < (*p)->data)
95
94
  であり、"き"は

7

追記

2019/03/22 06:17

投稿

apeirogon0813
apeirogon0813

スコア117

title CHANGED
File without changes
body CHANGED
@@ -88,7 +88,7 @@
88
88
  list **p = head_p;
89
89
  とありますが, このhead_pの値はリストの先頭のアドレスを指しているのでしょうか?
90
90
 
91
- 追記
91
+ **追記**
92
92
  間接メンバー"->"は選択演算*、アドレス演算&より優先順位が高いことを考慮して,
93
93
  "お"、"か"はそれぞれ
94
94
  while(*p != NULL && data < (*p)->data)

6

追記

2019/03/22 06:16

投稿

apeirogon0813
apeirogon0813

スコア117

title CHANGED
File without changes
body CHANGED
@@ -86,4 +86,13 @@
86
86
 
87
87
  でいいと思うのですが次の"か"と"き"を考える上でinsert2関数内の
88
88
  list **p = head_p;
89
- とありますが, このhead_pの値はリストの先頭のアドレスを指しているのでしょうか?
89
+ とありますが, このhead_pの値はリストの先頭のアドレスを指しているのでしょうか?
90
+
91
+ 追記
92
+ 間接メンバー"->"は選択演算*、アドレス演算&より優先順位が高いことを考慮して,
93
+ "お"、"か"はそれぞれ
94
+ while(*p != NULL && data < (*p)->data)
95
+ であり、"き"は
96
+ p = &(*p)->next;
97
+ であると思うのですが、これは
98
+ p = **pと表記することも等しいと思うのですかどうなんでしょうか。

5

画像の追加

2019/03/22 06:16

投稿

apeirogon0813
apeirogon0813

スコア117

title CHANGED
File without changes
body CHANGED
@@ -74,6 +74,7 @@
74
74
  }
75
75
 
76
76
  ```
77
+ ![イメージ説明](236b4d14c6eecf57777d3e92ca55d829.jpeg)
77
78
  ### 試したこと
78
79
  まず、"あ"と"い"は先頭が空リストの場合と値が昇順になることを考えて
79
80
 

4

修正

2019/03/22 06:08

投稿

apeirogon0813
apeirogon0813

スコア117

title CHANGED
File without changes
body CHANGED
@@ -20,6 +20,11 @@
20
20
  ### 該当のソースコード
21
21
 
22
22
  ```C
23
+ typedef struct list {
24
+ int data;
25
+ struct list *next;
26
+ } list
27
+
23
28
  list * list_alloc(int data) {
24
29
  list *p = malloc(sizeof(list));
25
30
  p->data = data;
@@ -52,7 +57,7 @@
52
57
  ```
53
58
 
54
59
  ```C
55
- void insert2(lost ** head_p, int data) {
60
+ void insert2(list ** head_p, int data) {
56
61
  list * new = list_alloc(data);
57
62
  list **p = head_p;
58
63
  while( お && か ) {

3

修正

2019/03/20 20:44

投稿

apeirogon0813
apeirogon0813

スコア117

title CHANGED
File without changes
body CHANGED
@@ -63,9 +63,9 @@
63
63
  }
64
64
  int main() {
65
65
  list *head = NULL;
66
- insert2($head,100);
66
+ insert2(&head,100);
67
- insert2($head,50);
67
+ insert2(&head,50);
68
- insert2($head,20);
68
+ insert2(&head,20);
69
69
  }
70
70
 
71
71
  ```

2

list_allocの追加

2019/03/20 20:42

投稿

apeirogon0813
apeirogon0813

スコア117

title CHANGED
File without changes
body CHANGED
@@ -20,6 +20,13 @@
20
20
  ### 該当のソースコード
21
21
 
22
22
  ```C
23
+ list * list_alloc(int data) {
24
+ list *p = malloc(sizeof(list));
25
+ p->data = data;
26
+ p->next = NULL;
27
+ return p;
28
+ }
29
+
23
30
  list * insert1(list *head, int data) {
24
31
  list *new = list_alloc(data);
25
32
  list *p = head;

1

修正

2019/03/20 20:33

投稿

apeirogon0813
apeirogon0813

スコア117

title CHANGED
File without changes
body CHANGED
@@ -13,7 +13,8 @@
13
13
 
14
14
  ググったのですが, ダブルポインタを用いた線形リストの参考になるサイトが見当たらなかったのでよろしくお願いいたします。
15
15
 
16
- ~~~~また, 例えば通常のポインタ *aであれば, aはaの指しているポインタ先のアドレスを示し, &aは自分のアドレスを示すことであると思うのですが,~~ ダブルポインタ **bの場合, bはポインタ先のポインタのアドレスかポインタのポインタ先のアドレスどちらを示しているのでしょうか?~~
16
+ ~~~~また, 例えば通常のポインタ *aであれば, aはaの指しているポインタ先のアドレスを示し, &aは自分のアドレスを示すことであると思うのですが,~~
17
+ ~~ダブルポインタ **bの場合, bはポインタ先のポインタのアドレスかポインタのポインタ先のアドレスどちらを示しているのでしょうか?~~
17
18
  ![![](1d1ba4b11b22fff84c469da26fc68d75.png)
18
19
 
19
20
  ### 該当のソースコード