C/C++の宿題を片付けます 58代目
■ このスレッドは過去ログ倉庫に格納されています
0845デフォルトの名無しさん
2006/01/26(木) 09:54:10[2] 問題文(含コード&リンク):
リストA:2,5,9,10
リストB:1,4,7,11
この2つのリストを先頭から順に読んで、以下の様なリストCを作る。
リストC:1,2,4,5,7,9,10
この様な操作はA,Bが整列されている事を前提とした上で、各リストの長さの和に比例する時間でリストマージが終了する。アルゴリズムとして書けば以下の様になる。
リストCを空とする
リストAの先頭をtopA、リストBの先頭をtopBとする(以降の動作では現在の位置となる)
topAもしくはtopBが空でない間、以下を繰り返す
topA->data<topB->dataならばtopA->dataをリストCにつなぎ、topA=topA->nextとする。topA->data>=topB->dataならばtopB->dataをリストCにつなぎ、topB=topB->nextとする。
注1:リスト構造は一方向とし、各要素はdata領域とnext領域を持つものとする。
注2:上記のアルゴリズムのままではtopAもしくはtopBが空になっても存在しないdata領域を使おうとするので、修正の要がある。
注3:リストマージの結果としては生成されたリストCを返す事。
課題:リストマージの関数を実現し、それを利用してリストマージを行え。リストのデータとしては整数を想定せよ。データは上記のデータを想定せよ。各リストに対して標準入力から入力するものとする。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2006/01/27
[5] その他の制限: 留年かかってますなんとかお願いします
■ このスレッドは過去ログ倉庫に格納されています