[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 07/05 16:55 / Filesize : 216 KB / Number-of Response : 952
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け(入門編)Part 104



1 名前:デフォルトの名無しさん [2012/07/15(日) 10:28:33.18 ]
C言語の入門者向け解説スレッドです。

★前スレ
C言語なら俺に聞け(入門編)Part 103
toro.2ch.net/test/read.cgi/tech/1341059858/
★過去スレ
makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
★教えて欲しいのではなく宿題を丸投げしたいだけなら
  ↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 158代目
toro.2ch.net/test/read.cgi/tech/1339338438/
★C++言語については避けてください。C++対応明記スレへどうぞ。
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること。
  # サイズが大きい場合はアップローダ等を利用してください。
codepad.org/
ideone.com/
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

147 名前:デフォルトの名無しさん [2012/07/23(月) 23:04:27.30 ]

PICマイコンを使用するためにC言語を勉強中です。
どうしてもプログラム中に、EEPROMへの読み書きを多用するので
int型とlong型用の2つの値をEEPROMから読み込み、int型long型のそれぞれの変数へ代入する関数を作ったのですが、ポインタの使い方がよくわかりません
hiとかloというのは2バイト以上の変数を1バイト単位に分割するために使用する”built_in.h”というヘッダファイル用の語句です
このコードの何がダメなのかも分らないのでご教授ください
よろしくお願いします

void main()
{
int x;
long y;
read2byte(100,&x);
read4byte(200,&y);
}

void read2byte(int a,int *b)
{
hi(*b) = EEPROM_Read(a);
lo(*b) = EEPROM_Read(a+1);
}

void read4byte(int a,long *b)
{
highest(*b) = EEPROM_Read(a);
higher(*b) = EEPROM_Read(a+1);
hi(*b) = EEPROM_Read(a+2);
lo(*b) = EEPROM_Read(a+3);
}


148 名前:デフォルトの名無しさん mailto:sage [2012/07/23(月) 23:10:09.88 ]
>>147
バイトオーダーが違うかもしれない
くらいしか分からん

149 名前:147 [2012/07/23(月) 23:11:54.31 ]
書き忘れました

EEPROM_Read(a); というのはコンパイラ付属の関数で、aがEEPROMのメモリアドレスです

150 名前:>>142 mailto:sage [2012/07/23(月) 23:14:59.54 ]
>>146
そもそもこのプログラムって何をしているものなのでしょうか....?
ソート?


あと、for文の上の
addlist(head, &addate)というのは何なのですか?

151 名前:片山博文MZボット ◆0lBZNi.Q7evd [2012/07/23(月) 23:18:05.21 ]
hi,loの定義をさらせ。
hi(*b)は左辺値ではないから代入できないと思われ

152 名前:147 [2012/07/23(月) 23:23:18.80 ]
>>151

2バイト以上の値、例えばlong型(4バイト)を低いビットからlo,hi,higher,highestとバイト単位に分割するものです


153 名前:デフォルトの名無しさん mailto:sage [2012/07/23(月) 23:26:02.62 ]
>>150
うんにゃ
わたされた head から末尾を探し出して、その末端にさらに 渡された adddata を繋げてる

name0〜name4 までのリストを手で構築後
adddata 関数を呼び出してる

意図として name0〜name4 の後ろに adddata を連結しようとしてる と俺は解釈した

154 名前:デフォルトの名無しさん mailto:sage [2012/07/23(月) 23:29:09.93 ]
× adddata 関数を呼び出してる
○ addlist 関数を呼び出してる

155 名前:>>142 mailto:sage [2012/07/23(月) 23:30:02.40 ]
>>153ご丁寧にありがとうございます

このプログラムはAがname0に入るわけでは無いんですか??

addataがname4の後に連結した時、whileが初めて回りだしてAが先頭に来るって事ですか?

やばい日本語おかしくてスミマセン



156 名前:デフォルトの名無しさん mailto:sage [2012/07/23(月) 23:36:07.74 ]
printf() の出力結果は BCDEA の予定
ABCDE にしたいのなら

void addlist(LIST *head,LIST *addata)
{
 LIST *p = head->next;
 head->next = addata->next;
 addata->next = p;
}


157 名前:デフォルトの名無しさん mailto:sage [2012/07/23(月) 23:36:41.10 ]
>>142
厳しいようだけど、
明日試験で、過去問で解答が分からない。ってのは
解答を教えても、明日の試験では違う問題がでるから意味が無いのでは?
解き方が分かっていないんだから。

このプログラムは、addlistが不明なのだが、明示されてるのだから、
そこを理解する所から、入るべき。
(まさしく >>150 の疑問を理解できる様になる事が大事)

それから、足りない部分(addlistの中身)を考える。

158 名前:デフォルトの名無しさん mailto:sage [2012/07/23(月) 23:37:14.59 ]
× head->next = addata->next;
○ head->next = addata;

なんかヒデェな… もう寝る

159 名前:157 mailto:sage [2012/07/23(月) 23:39:14.48 ]
>このプログラムは、addlistが不明なのだが、明示されてるのだから、そこを理解する所から、入るべき。
まつがい。
このプログラムは、addlistが不明なのだが、明示されている所を理解する所から入るべき

160 名前:>>142 mailto:sage [2012/07/23(月) 23:40:52.16 ]
レス下さった皆さんありがとうございます
そもそも一晩(ではないんですけども)でやろうとした自分が悪いですね...

少し前の方から再度勉強しなおしてきます...
ありがとうございました!

161 名前:片山博文MZボット ◆0lBZNi.Q7evd [2012/07/23(月) 23:41:19.46 ]
*b = ((int)EEPROM_Read(a) << 8) | (int)EEPROM_Read(a+1);

*b = ((long)EEPROM_Read(a) << 24) | ((long)EEPROM_Read(a+1) << 16) | ((long)EEPROM_Read(a+2) << 8) | (long)EEPROM_Read(a+3);
みたいに書かないといけない。

162 名前:デフォルトの名無しさん mailto:sage [2012/07/23(月) 23:47:27.06 ]
>>147
君はまだEEPROMを使うべきではない(きり)

163 名前:片山博文MZボット ◆0lBZNi.Q7evd [2012/07/23(月) 23:58:54.84 ]
共用体を使う方法もある。
union I16{int i;
struct {unsigned char LO,HI;}};
union I32{long l;struct {I16 LO,HI;}
};


164 名前:片山博文MZボット ◆0lBZNi.Q7evd mailto:sage [2012/07/24(火) 00:14:51.03 ]
久しぶりにCやったら;とunionをつけ忘れたよ

165 名前:147 [2012/07/24(火) 00:26:01.62 ]
>>161
レスありがとうございます。

その式と、下記の式だと自分には同じ動作だと思ってしまうのですが
何がどう違うのでしょうか?本当にわからないです><

void read4byte(int a,long *b)
{
highest(*b) = EEPROM_Read(a);
higher(*b) = EEPROM_Read(a+1);
hi(*b) = EEPROM_Read(a+2);
lo(*b) = EEPROM_Read(a+3);
}





166 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 00:29:04.57 ]
>>165
hi とか lo がどんなものか分からないからこうしようぜ

void read4byte(int a, long *b)
{
unsigned char *p;
p=(unsigned char*)b;
*(p+0)=EEPROM_Read(a+0);
*(p+1)=EEPROM_Read(a+1);
*(p+2)=EEPROM_Read(a+2);
*(p+3)=EEPROM_Read(a+3);
}

167 名前:片山博文MZボット ◆0lBZNi.Q7evd [2012/07/24(火) 00:33:47.87 ]
>>165
恐らくhiマクロなどは内部でシフト演算を使っているので
hi(*b)などは参照がなくなって左辺値になれないから代入対象になれない。ただそれだけ。

168 名前:147 [2012/07/24(火) 00:39:29.70 ]
>>166

レスありがとうございます。
実は、>>165で書いた式と、>>161さんの書いた式で問題なく読み込みができたのですが、
PICマイコンのスレで同じような質問をしたところ、ポインタの使い方?がおかしいと指摘されて
ここで質問させて頂きました。
一番気になるのはポインタの使い方の間違いと間違っているために起こり得る問題です。
long型(適当な値 99,999とか2,222,222)を一旦、EEPROMに書き込み、上記の式で読み込ませたところ
正常に読み込まれているので何が何だかさっぱりわかりません~~;

169 名前:147 [2012/07/24(火) 00:44:24.25 ]
>>167

レスありがとうございます。
実は、>>168で書いたよう、に教えて下さった式も自分で書いた式も問題なく読み込みできています。
本当に何がダメなのか、本当はダメではないのか分らず、困りましたorz

170 名前:片山博文MZボット ◆0lBZNi.Q7evd [2012/07/24(火) 01:00:20.84 ]
ファイルbuilt_in.hを開いて中身を確認しなさい。
そこにhi,loの定義があると思われます。
それらをさらして下さい。

171 名前:147 [2012/07/24(火) 01:04:28.32 ]

>>170
了解しました。下に晒します。
話変わりますが、例のコードはポインタの使い方って間違っていますかね?
そこが気になります。

#define Lo(param) ((char *)¶m)[0]
#define Hi(param) ((char *)¶m)[1]
#define Higher(param) ((char *)¶m)[2]
#define Highest(param) ((char *)¶m)[3]

#define lo(param) ((char *)¶m)[0]
#define hi(param) ((char *)¶m)[1]
#define higher(param) ((char *)¶m)[2]
#define highest(param) ((char *)¶m)[3]


172 名前:147 [2012/07/24(火) 01:06:18.61 ]
文字化けしたので、&とparamの間にスペース入れました

#define Lo(param) ((char *)& param)[0]
#define Hi(param) ((char *)& param)[1]
#define Higher(param) ((char *)& param)[2]
#define Highest(param) ((char *)& param)[3]

#define lo(param) ((char *)& param)[0]
#define hi(param) ((char *)& param)[1]
#define higher(param) ((char *)& param)[2]
#define highest(param) ((char *)& param)[3]

173 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 01:06:47.16 ]
>>171
>>147 のままで合ってるよ

174 名前:片山博文MZボット ◆0lBZNi.Q7evd [2012/07/24(火) 01:08:49.01 ]
検証の結果、問題なし。

シフト演算じゃなくて&とキャストを使ってた

175 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 01:10:37.95 ]
hi, lo マクロは左辺値になれる形式だな

> PICマイコンのスレで同じような質問をしたところ、ポインタの使い方?がおかしいと指摘されて
その指摘は hi, lo を関数だと勘違いしての指摘かもしれんね



176 名前:147 [2012/07/24(火) 01:11:22.58 ]
>>173
マジですか?
PICもC言語も始めて数か月程度しか経っておらず、ポインタを覚えるためにも初めて使ってみたのですが
PICマイコンスレで指摘され、どうしても自信がありません><


177 名前:147 [2012/07/24(火) 01:14:57.23 ]
>>174-175

レスありがとうございます!
キャストとかの語句はまったくわかりませんでしたのでもっと勉強しないとダメですね
どうもありがとうございました!



178 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 07:52:56.12 ]
いえいえ

179 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 11:01:09.22 ]
連結リストの質問チラホラ出るけど、ポインタで教えるor
ポインタtoポインタで教えるのは教員の好みによるものなのかい?

180 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 11:06:40.17 ]
リストで二重ポインタなんか使わんだろ

181 名前: ◆QZaw55cn4c mailto:sage [2012/07/24(火) 12:25:23.77 ]
>>180
え?使わない?
二重ポインタを使わないとなると、コピーコピーコピー、とルートまで延々コピーする格好の悪いことになるのだが?

182 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 12:31:00.60 ]
>>181
それが正解だよ
コピーコストが嫌ならリストオブジェクト全体の参照を取ればいい
ノードの参照は共有しないのが常識

183 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 12:46:33.76 ]
free()しちゃうとダングリングポインタが出来てしまう危険があるからか

184 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 13:12:59.51 ]
ttp://ideone.com/k4BZz
ふつー二重ポインタ使うでしょ

185 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 13:29:10.43 ]
二重ポインタってポインタが指してる先を変更したい時に使うんじゃないのか?
それかポインタ配列か

話は変わるけどこういうのはcがfree()されるとaもbもダングリングポインタになってしまうけど
検出されないのな
当たり前か
後からaやbを使いまわす可能性があるし

int main(void)
{
int *a, *b, *c;

c = (int *)malloc(sizeof(int));

if (c == NULL)
exit(1);

*c = 123;

a = b = c;

printf("%d %d %d\n", *a, *b, *c);

free(c);

return 0;
}



186 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 13:29:14.80 ]
使わねーよ。
アホすぐる。

187 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 13:30:18.83 ]
>>185
お前はまったく理解していない。

188 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 14:51:53.24 ]
for(i=0; i< 空欄B (float) ; i++) printf("%02x", *p++);


この空欄Bに入る単語を答えよという問題があるんですが  キャスト演算子(float)を セミコロン直前におくような
表現が思い当たりません。(問題文全体はもっと長いです。)どのような表現が入りうるのでしょうか?

189 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 14:54:21.10 ]
sizeof

190 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 15:06:43.27 ]
あー、失念してました。ありがとうございます。 ついでに
printf(" %-12g",f); の意味も教えていただけないでしょうか?
問題が紙なので %ー12じゃなくくて %ーL2 かもしれませんが

191 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 15:09:38.05 ]
すいません%-12gのほうはもういいです

192 名前: ◆QZaw55cn4c mailto:sage [2012/07/24(火) 18:43:39.47 ]
>>185
C に「検出」などというお子様仕様は皆無。

193 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 18:47:15.43 ]
コンパイラによっては未使用変数や未初期化変数のアクセスは検出するがCの仕様ではないよな。

194 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 18:52:58.26 ]
ひょっとしてinlineってCの仕様じゃない?

195 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 18:55:30.07 ]
C99から。



196 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 20:16:30.67 ]
ソフト会社でC99での開発って結構あるの?

197 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 20:17:28.88 ]
まずない。

198 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 20:18:43.63 ]
ですよねー

199 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 20:24:23.89 ]
>>192
無職のオッサンに上から目線で言われたくないなあ

200 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 20:25:29.58 ]
GCのアルゴリズムでも勉強したら?

201 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 20:39:57.16 ]
Cでインラインしたいときはどうしてるの?

202 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 20:41:25.79 ]
#define

203 名前: ◆QZaw55cn4c mailto:sage [2012/07/24(火) 20:49:42.06 ]
>>182
よろしければもう少しお話しいただけるとありがたい。
二重ポインタあるいはポインタの参照は必要不可欠だと思うのですけれども、それで正しいということでしょうか?
それともポインタのみで正、なのでしょうか?
ideone.com/50Y4Z

204 名前: ◆QZaw55cn4c mailto:sage [2012/07/24(火) 20:50:19.64 ]
>>199
であればそういう発言をしないことだ。

205 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 21:09:46.86 ]
>>203
ルートノードを直接的にリストとみなさずに
ルートノードを包むようなリストオブジェクトを書くんだよ
ルートのアドレスがコロコロ変わったらリストを参照してる人が大変だろう



206 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 21:09:52.12 ]
>>204
人のせいにすんな
まず働け

207 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 21:11:37.90 ]
>>205
相手にするな。

208 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 21:40:15.20 ]
cmdにgccと打つと、{gcc: 致命的エラー:入力ファイルがありません
 RpC~オワオスB}とでるんだけど、だれか助けて(泣)

209 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 21:56:37.78 ]
オワオスって何か\(^o^)/オワタみたい

210 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 22:17:32.84 ]
>>208
ソースファイルを指定してないからじゃないの?

211 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 22:20:02.05 ]
使っている人間が致命的なまでのノウミソなんだろうな。
なんて打ったかくらい全部描けよアホ


212 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 22:24:49.58 ]
>>203
C++で書くんならmallocじゃなくてnew使おうよ・・・
必死で書いたのが伝わってきてキモス

213 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 22:25:22.19 ]
全部書いてるんだろ。

214 名前: ◆QZaw55cn4c mailto:sage [2012/07/24(火) 22:28:23.70 ]
>>205
たしかにそれには同意します。
特にクラスに仕立てるときに、ルートを含むクラスとノードのクラスを一つにまとめようと苦心した記憶がありますが、
結局のところ、ルート(ファーストノードをさすポインタ)は、ノードクラスとは別にしたほうがいいと考えるようになりました。
codepad.org/jUqoMRPp
(結城さんのJavaデザパタ本はadapterパターンを試行したものです。リストではなく二分木ではありますが、Node クラスはほとんど構造体扱いで Node クラスのメンバ関数は軒並みstaticの有様です。)

ただしここで話題となっている、いや話題としたいのは、「リストや二分木を扱うときに、二重ポインタを使わずに書く、というのはあまり考えられないのでは?」という素朴な疑問です。

215 名前: ◆QZaw55cn4c mailto:sage [2012/07/24(火) 22:30:09.22 ]
>>212
単にCで参照を使いたいという願望だけでざっと書き下ろしてみたのですが、あー、ぶれてますねえ、なんで cstdio を使わずに iostream にしちゃったんだろう?



216 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 22:37:28.68 ]
リファレンスへのポインタなんて恐らく初めて使ってみたんだろうな

217 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 22:41:16.29 ]
おい、おまえらQZに対する嫉妬がすぎるぞw

218 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 22:41:17.06 ]
C++でいいのならstd::listとか使うだろ

219 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 22:45:05.48 ]
>>214
二重ポインタを使う必要がない(実際、簡単に書ける)
だからわざわざ間違いが起こりやすい二重ポインタを使うのは避けるべき

220 名前: ◆QZaw55cn4c mailto:sage [2012/07/24(火) 22:55:52.66 ]
>>216
ではなくて、ポインタ変数のリファレンス。

昔いろいろやってみたことがありました。toro.2ch.net/test/read.cgi/tech/1277860967/504

221 名前: ◆QZaw55cn4c mailto:sage [2012/07/24(火) 22:57:37.23 ]
>>219
うん、それが理解できないでいるのです。
リストは >>184 ににた形で(二重ポインタ抜きで)書けそうですが、二分木やAVL木では、二重ポインタなしではほとんど不可能では、と考えるのです。

222 名前:デフォルトの名無しさん mailto:sage [2012/07/25(水) 05:11:34.41 ]
ほんと、低脳ほど頭が固くて笑える。

223 名前:デフォルトの名無しさん mailto:sage [2012/07/25(水) 05:34:23.01 ]
>>217
自己愛性パーソナリティ障害が何を言うかw

224 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/07/25(水) 07:36:23.36 ]
書けるっていう奴が書いてみせればてっとりばやいんじゃね?

225 名前:デフォルトの名無しさん mailto:sage [2012/07/25(水) 07:52:53.60 ]
え?お前も書けないと思ってんの?
コテやめた方がいんでね?



226 名前:デフォルトの名無しさん mailto:sage [2012/07/25(水) 07:53:54.44 ]
↑池沼

227 名前:デフォルトの名無しさん mailto:sage [2012/07/25(水) 08:10:24.87 ]
>>226
自己紹介乙。
今時Cなんて書かないけど、リストなんてのも書かないけど、
書くとしたらこんなもんだろ。
ideone.com/3miZh

228 名前:デフォルトの名無しさん mailto:sage [2012/07/25(水) 08:40:42.42 ]
うむ、リスト使う位ならC++で書くからな。

229 名前:デフォルトの名無しさん [2012/07/25(水) 08:51:22.93 ]
>>219
二重ポインタくらいで音を上げるど素人が「べき」なんて言うな、おこがましい

230 名前:デフォルトの名無しさん mailto:sage [2012/07/25(水) 09:00:02.35 ]
お前がな。

231 名前:デフォルトの名無しさん mailto:sage [2012/07/25(水) 09:31:33.84 ]
>>229
本物の低脳を久々に見た
229はガチでヤバイ

232 名前:デフォルトの名無しさん mailto:sage [2012/07/25(水) 09:31:51.97 ]
元は教員がど素人に教えるときの話でしょ

233 名前:デフォルトの名無しさん mailto:sage [2012/07/25(水) 10:28:33.93 ]
スタンフォードの例だ
cslibrary.stanford.edu/105/LinkedListProblems.pdf

234 名前:デフォルトの名無しさん mailto:sage [2012/07/25(水) 11:26:23.77 ]
老害にはC++の良さがわからんのですよ

235 名前:デフォルトの名無しさん mailto:sage [2012/07/25(水) 11:32:07.99 ]
>>184を見てみたが、要するにこれってリストの「先頭に」ノードを付け加えて行って、
先頭ノードを指すポインタの値がコロコロ変わるために、二重ポインタを使って
先頭ノードを指すポインタの値を書き換えてるんだよね

リストの最後尾にノードを付加するようにすれば二重ポインタは不要



236 名前:デフォルトの名無しさん mailto:sage [2012/07/25(水) 11:38:54.61 ]
挿入関数に渡したノードを指すポインタ以外がそのリストを参照していた場合参照先を見失う

237 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/07/25(水) 12:21:56.77 ]
>>225
書けないということは事実上証明不能 (いわゆる悪魔の証明) なので、
この場合の証明責任は書けるという側にあるということを述べただけで俺は
内容についてどちらとも思ってないというか全く考察してない。

238 名前:デフォルトの名無しさん mailto:sage [2012/07/25(水) 12:24:56.26 ]
普通なら考察以前の問題だからコテはずせって話なんだろ。

239 名前:デフォルトの名無しさん mailto:sage [2012/07/25(水) 13:10:58.12 ]
>>236
だよな
だから先頭にノードを付け加えるのは特殊なケースを除けば百害あって一利なしのような気がする

240 名前:デフォルトの名無しさん mailto:sage [2012/07/25(水) 13:19:05.19 ]
末尾追加は末尾を指すポインタの分メモリが必要、これが無いと遅くなる
先頭追加なら早くて、追加のメモリも要らないが、参照がコロコロ変化するのが面倒なのでリストをラップするオブジェクトが必要になり結局メモリ効率も前者と同じになる

241 名前:デフォルトの名無しさん mailto:sage [2012/07/25(水) 13:50:20.40 ]
なら双方向リストにしろよ
メモリはたくさん食うけど先頭ノードからすぐに末尾ノードへのポインタを得る事が出来る
だいたいリストをソートする時には単方向リストだと大変だぞ

242 名前: ◆QZaw55cn4c mailto:sage [2012/07/25(水) 19:43:53.07 ]
>>227
>>184, >>203 より機能を削ってますね。リストの頭にしかノードを追加できない。
>>184, >>203 と同じようにリストの途中に挿入する形で、かつ二重ポインタを使用しない、というのは可能なんでしょうか。

双方向ならできるかな?

243 名前:デフォルトの名無しさん mailto:sage [2012/07/25(水) 19:46:08.51 ]
できる
以上

244 名前:デフォルトの名無しさん mailto:sage [2012/07/25(水) 19:53:54.30 ]
以上


詳細を議論できなくて逃げたいゴミがよく使う言葉

245 名前:デフォルトの名無しさん mailto:sage [2012/07/25(水) 19:59:51.56 ]
逆になんで出来ないと思うのか疑問



246 名前:デフォルトの名無しさん mailto:sage [2012/07/25(水) 20:08:27.46 ]
>>245
横からだが、それは、さすがに
悪魔の証明を求めていると思う。

247 名前:デフォルトの名無しさん mailto:sage [2012/07/25(水) 20:09:02.25 ]
>>241
双方向でリング状?
先頭->prev = 末尾
末尾->next = 先頭






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<216KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef