• 締切済み

キューの実現方法

配列によるキューの実現方法、リストによるキューの実現方法の二つのキューの実現方法について教えてください。 またその二つの長所、短所等もできればお願いします。 自分は大学院生ですが、化学が専攻なためパソコンやプログラムに関してあまり知識がありません。 文献等見てみたのですが、あまり意味がわかりません。 わかりやすく教えてもらえればうれしいです。 すいませんがよろしくお願いします。

みんなの回答

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.4

「キュー」は待ち行列です。先入れ先出し(FIFO:First In First Out) が特徴です。配列とリストをご存知のようなので、それをベースに説明します。 簡単のために、キューにはデータのキーだけを登録するものとします。 キューの最大数は一応100個とします。 配列型(1)・・先頭から登録する。先頭から取り出していく。先頭部が空くと、        前詰を行なう。      配列型(2)・・先頭から登録する。先頭から取り出していく。先頭部が空いても放        置する。後尾部の次の登録は先頭に行なう。 リスト型・・・・・配列はとらない。(とる方法もある。)キューが発生するごと に1件分のメモリーをOSまたはメモリ管理サブに要求。 順番管理はアドレスチェーン(ポインタ)で行なう。配列番号でも出来る。 配列型は待つための椅子を100席準備している。 (1型)は前に詰め合わせて待たせる。 (2型)は詰め合わせず、円形に使わせる。 リスト型は待つ場所の指定はない。チェーン番号を示す番号札を与える。 ここまでが概要説明です。 あとは長短。 配列1型・・・判りやすいが詰め合わせロスが多い。管理はキュー個数1個のみ。 配列2型・・・詰め合わせはないが、わかりにくい。管理は先頭と次の登録の2つ    のポインタ。ラップアラウンド(最後尾から先頭への戻り処理)がポイント。 リスト型はキューの大きさは事実上無制限。途中で増減することだって出来る。 最後に、途中への割込み、途中からの離脱なども容易に処理できる、リスト型が万能のキュー実現形態だと言っても良い。(目的によることをお忘れなく)

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.3

>またその二つの長所、短所等もできればお願いします。 プログラミングの仕方が違うだけだと思うので、どっちもどっちかなと思います。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

(1)Amazonなど本を注文するサイトで「データ構造」「アルゴリズム」等で書名検索をして、貴大学図書館で本を借りるか、購入して読むべし。 (2)同じく「データ構造」「アルゴリズム」でWEB検索するべし。沢山出てきますよ。 OKWEBなんて限られた短いスペースでは充分説明できるほど の単純なテーマではないと思うので。 (3)モデル的考え方と特定の言語(例 C言語)でコンピュタ上で実現する方法と両方が必要です。 http://www.morikita.co.jp/soft/kiriyama/8399/

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

実現方法の前に キューというものを ちゃんと理解してるかどうかが問題ですね。 理解してればおのずとわかると思うのですが・・・。 ま、配列を使ったキューの説明をしましょう。 配列でたとえば、100個の領域を確保したとしましょう。 その領域に1個キューが入ります。すると1番目になりますね。 で、どこまで取り出したかというポインタがあって、それが最初なので1番目になってます。取り出すほうは、そのポインタをもとに取り出してきます。 キューを入れるほうは、入れたポインタというのを参照して、今、一個入れたから、ポインタが 2になってて、次入れるときは、そのポインタを見て入れます。 2なので2番目に入れるということです。 取り出すほうが 取り出すポインタと入れるポインタが同じかチェックして 同じだと取り出すものがないと判断してキューがないと判断します。 んで、100個を超えたときは、1に戻ります。 入れるときに取り出すポインタと入れるポインタが一緒になったら、入れる場所がないので、エラーとなって入れることができません。 一般的に、この領域のサイズをこのエラーが生じにくいぐらいの大きさに設定しておきます。 ま、こんな感じなんですけど、わかったかな?

関連するQ&A

  • VBでリスト構造を実現するには?

    DTDとHTMLのパーサを作ろうと思い、データを解析して配列に入れようとしていたのですが、配列じゃなくてリスト構造で実現しろというお達しをうけて非常に困っています。 そもそもVBでリスト構造って実現できるんでしょうか?実現できるのであればその方法を教えていただきたいと思っています。

  • Delphiでキューを作りたい

    Delphi初心者です。ゲームを制作中なのですが、相談に乗って頂けますでしょうか。 プログラムの骨格は、演算→描画の繰り返しなんですが、演算結果を次々と描画ルーチンに渡すと、描画が間に合わなくなったときに破綻してしまいます。 (描画で使っているコンポーネントがクラッシュしてしまう) そこで、演算部で表示させるものを計算しキューに追加していき、CPUのアイドル時間を見つけてはキューから順次取り出して描画、という方法を試したいと思います。 (オーバーフローしたら破棄する) そこで、スタックとかキューを使ったことがないのですが、単純に配列を使って、 1.データを最後尾に加える 2.データを先頭から出し、順次前に詰める 簡単な方法があったら教えて頂きたいと思います。 (それくらい手動でやれと言われそうですね(^_^;) よろしくお願いいたします。

  • -海外論文集め-お薦めの方法を教えてください。

    -海外論文集め-お薦めの方法を教えてください。 理工系の海外文献を探そうとしています。しかし、具体的に利用する雑誌、サイト、雑誌・サイトの利用方法、必要料金等が全く分かりません。 海外文献を入手した事がある人、または、入手方法に詳しい方に質問です。皆さんが知っている文献収集方法を長所・短所等を含め、御教えください。

  • スペースによる絞り込み検索をSQL文だけで実現したい

    単語がスペースで区切られている場合、 文字列を分割して配列に入れ foreachなどでANDを足していく方法が主流(?)なようなのですが、 これをSQL文だけで実現することは可能でしょうか? いろいろ調べたのですが、 SQL文にforなどの繰り返しがなさそうなのでむずかしいのかなと思っているのですが・・・ MATCHやAGAINSTを使って実現できますか? あるいはストアドプロシジャなどでも構わないのですが・・ 知識が乏しいので用語の使い方などもおかしなところがあるかと思いますが、よろしくお願いします。

    • ベストアンサー
    • MySQL
  • 大学で出題されたプログラムの問題です

    自然数(0を含む)のデータを保持するキューを実現し、そのプログラムリストを示せ。ただし、メニューに「(1)キュー内のデータの表示(2)データの追加;追加データの入力(3)データの取り出し;取り出しデータの表示(4)終了」を含み実現せよ。 どうしてもわからなかった問題でした。 回答よろしくお願いします。

  • 吉田松陰の教育の成果と限界

    松陰の教育理念、教育方法の長所、短所、限界など、どんなことでも構いませんのでご指導ください。 また、おすすめの参考文献などもあればお願いいたします。

  • ミセルの取り込み評価の方法について

    高分子系の研究室に所属しています。ポリマーを合成後に、ミセルを形成させ最終的に薬物キャリアへ応用するというのが、ざっくりとした研究内容です。 ここからが本題なのですが、先日先生にミセルの取り込み評価について、大きく分けて以下の2種類の方法の長所、短所を調べて、自分の実験系にあうものを考えなさいといわれました。 1.蛍光物質などをポリマーの末端に直接結合させ、ミセルを形成→取り込み 2.(ピレンなどの)蛍光物質をミセルに内包→取り込み 個人的には、RAFT剤という重合剤を用いており、還元するとポリマーの末端にくるこの重合剤が容易にチオールになるため、1番の方法が簡単でよいのではと感じましたが、長所や短所を説明することにはならないので困っています。 いくつか文献を読んだり、調べてみたのですが、これらを比較しているものが見つかりません。(根本的に探し方が違うのでしょうか汗) 説明があまりに簡略なのでわかりにくいところが多いとは思いますが、よろしくお願いします。何か参考になる本、文献、アドバイス等いただけたら大変うれしいです。

  • DELL Vostro 1310 について

    大学入学にあわせ、ノートパソコンを買います。用途はレポート関係が中心で、ネットがサクサク使えたらよくて、オンラインゲームはする予定ありません。持ち運びに苦がなければ嬉しいです。ふとカタログを見ると安くあったので目につきました。パソコンの中身のことについては知識がないのですが、何か長所や短所があれば教えてください。特に大きなこだわりがないため6、7万までくらいで買いたいです。

  • 情報システムと工学

    コンピューターのしくみで,基本データ構造についてなんですが.. リストを用いたグラフの表現方法と,その長所と短所について教えてください。 どんな小さなことでも教えてください。 お願いします。

  • 原子同士の結合をプログラムで実現したい

    化学の知識も必要とされるので、自分も質問自体が曖昧になっちゃうんですが、 なるべくイメージできるように書いていきたいと思います。宜しくお願いします。 そもそもなんでこのようなことをしたいのかというと、 原子ひとつひとつに自身を処理するプログラムを持たせて、それを結合させて、 3Dの物体や空間を作りたいと思ったからです。 今よくある3Dゲーム(というよりゲーム)は、例えばある物体が壁まで到達したら そこでif分岐などを使って当たり判定などして、描画自体を制御していますが、 もしこの原子(自身のプログラムを持ってる)を結合させてある物体を作り出すことが できたなら、そういう制御プログラムも新たに付け加える必要もないし、 現実に近い環境をゲームに作り出すことができそうな気がするんです。 現実では1センチぐらいの物体でも、その中には何億何兆(もっと?)の原子が 詰まってると思うんですけど、それだとその時点でプログラムではどうしようもできないで、 プログラムの場合だと1センチに100個ぐらい原子で構成されるように簡略化したいです(できるものなら・・・) もちろんそれでも計算処理が膨大で実現は不可能だとは思いますけど、 とりあえずどんな感じのプログラムになるのかということが知りたいのです。