※ ChatGPTを利用し、要約された質問です(原文:ポインターの繋ぎ換え)
ポインターの繋ぎ換え
このQ&Aのポイント
動的に確保した領域にデータを入れ、入れたデータをソートするプログラムを作成しています。
ソートする際に最後まで見た場合に再度先頭に戻る方法が分からないので、ご教授をお願いします。
現在の状況として、入力したデータを降順にソートすることができています。
動的に確保した領域にデータを入れ、
入れたデータをソートするプログラムを作っているのですが、
ソートする際に(入力3データ)→[head=p->next]→(入力2データ)→[head=p->next]→(入力1データ)→[head=p->next]と最後まで見た場合に再度先頭に戻る方法が分からないのでご教授お願いします。
■イメージ
head=NULL
p
動的な領域の確保(p)
(入力1)|no.1|Name1|struct sample *next|
p->next = head /* NULLを入れる */
head = p; /* 入力したデータを入れる */
動的な領域の確保(p)
(入力2)|no.2|Name2|struct sample *next|
p->next = head /* 前回の[入力1]のデータを入れる */
head = p; /* 入力2で入れたデータを入れる */
動的な領域の確保(p)
(入力3)|no.3|Name3|struct sample *next|
p->next = head /* 前回の[入力2]のデータを入れる */
head = p; /* 入力3で入れたデータを入れる */
*現状*
(入力3)-(入力2)-(入力1)-NULL
↑最後に入力したデータ
(降順にソート後)
|no.3|Name3|struct sample *next|
動的な領域の確保
|no.2|Name2|struct sample *next|
動的な領域の確保
|no.1|Name1|struct sample *next|
環境:WinXP-SP3
コンパイラ:VisualC++ExpressEdition2008
使用関数:malloc
以上、宜しくお願いします。
お礼
何とか解決いたしました。 ありがとうございます。
補足
回答ありがとうございます。 >単方向のリンクリストですよね。 はい。 >struct sample { > int no; > char[MAX_SIZE] Name; > struct sample* next; >} >的な感じになっているんでしょうか? 構造体の定義は、上記の記述の通りです。 >headをいじるのはアウトです。 記述ミスですみません。headは、struct sample *head=NULL です。 >struct sample p = s3->next; >s1->next = s3 >s3->next = s2 >s2->next = p; //= s4 >という感じでできます、多分(今考えてやってるので間違ったら御免)。 考え方は,それでいいのですが プログラム的に考えると、数値の判断をどうすればいいのかがちょっと分からないところです。