C/C++の宿題片付けます 127代目
■ このスレッドは過去ログ倉庫に格納されています
0481デフォルトの名無しさん
2009/06/16(火) 18:12:28[2] 問題文:
文書ないのすべての単語とその単語の頻度をメンバとして持つ構造体を定義し、
この構造体へのポインタをノードの値として持つ二分木のノードを定義せよ
次に、任意のノードはその左の部分木にはそのノードの単語より辞書順で小さい単語のみがあり、その右の部分木にはより大きい単語のみがあるように保持される。
新たに単語がすでに木にあるかどうかを探すには、ルート(根元)から出発してそのノードに格納されている単語と新しい単語を比較する。
二つが一致したら、それで良い。
新しい単語が木の単語より小さいときは、探索は左の子供に対して続けられ、そうでなければ右の子供が調べられる。
求める方向に子供がないときは、新しい単語は木の中にはないと言うことであり、また実際にはその子供のないところがそれを置く場所である。
このプロセスは再帰的である必要があり、単語の挿入を行うadd_word()関数を定義せよ。この関数は再帰的に呼ばれて、左または右の部分木に振り分けられる。
単語は木の中の単語と一致する(その場合カウント(頻度)がインクリメントされる)か、あるいはノードを作成し、木に加えなければならないことを示すヌル・ポインタと出会う。
新たにノードが生成されると、この関数ではそのノードへのポインタが返され、親ノードに埋め込まれる。
この関数を利用し、以下のテキストをコマンド実行時の引数として与えられたファイルを入力して二分探索木を生成し、単語と頻度のリストを表示するプログラムを作成せよ。
文章:
University was founded in April 1998 at Iwate,
which is situated in the northeastern part of Japan. University consists of
four faculties Software and Information Science, Nursing, Social Welfare,
and policy Studies, and additionally other educational supporut centers.
[3] 環境
[3.1] OS:Unix
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: C
[4] 期限: 2009年06月18日13:00まで
[5] その他の制限: アルゴリズム論とデータ構造の序盤です。特に指定はないです。
長文になってしまい、申し訳ありません
よろしくお願いします
■ このスレッドは過去ログ倉庫に格納されています