私はしばらく解決しようとしていましたが、正しい実装を理解するのが難しいという疑問があります。それぞれが製品名、型式、シリアル番号、小売価格などからなる何千ものレコードを操作するプログラムを書く場合、以下のそれぞれのケースで、使用する抽象データ型(キュー、スタック、並べ替えられていないソート済みリスト) 、およびどの実装(配列またはリンクされた構造)が含まれます。あなたの選択肢を簡単に正当化します。実装の種類は?
1)レコードは、格納されたのと同じ順序で取得されます。処理されるレコード数とその方法は、事前には知らされていません。
- 私たちが最初にレコード数を知らない、と彼らはので、保存されている彼らも可能とすることができるリンクされなければならないとデータが取得されますので、リンクリストの実装を使用し、この目的のためにソートされていないリストを好みますQueueやStackのようなADTでは配列の実装を使用するため、メモリ割り当ての問題が発生します。
2)すべてのレコードは、先頭に1回、特定の順序で挿入されません。シリアル番号に基づいて頻繁に検索されます。
- レコードのすべてのデータを一度に印刷する場合でも、並べ替えられていないリストでも可能です。
3)大量ではあるが未知数の製品レコードが、必要に応じて挿入されます。彼らはめったに個別に検索されません。ほとんどの操作は、すべてのレコードを一度に処理すること、例えばすべてを印刷することからなる。
- は、しかし、ここでソートし、ソートされていないリストを使用するより効率があったが、それはその効率を低下させるソートに時間がかかるので、私は、ソートされていないリストを好みます。
あなたはどう思いますか?
ヒント:リストはほとんど常に間違っています。そして、配列に基づいたスタックとキューが間違っているというあなたの仮定。 –
これは教科書や試験の問題ではなく現実の問題であれば、Stroustrupの提案に従ってベクトルから始めましょう。なぜか2つの言葉:キャッシュ効果。 – lorro
@lorroこれは私が今日解決している教科書の問題です。 –