• 締切済み

大学で出題されたプログラムの問題です

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

みんなの回答

回答No.2

Java 勉強中です。 import java.util.*; class NaturalNumberQueue extends AbstractQueue<Integer> {  private ArrayList<Integer> queue = new ArrayList<Integer>();  private int front = 0;  public int size() { return queue.size() - front; }  public void clear() { queue.clear(); front = 0; }  public Iterator<Integer> iterator() {   if (this.size() < 0) { this.clear(); return queue.iterator(); } // System.err.print("iterator front: " + front); // System.err.print(" , size: " + this.size() + " , queue: "); // System.err.println(queue);   return queue.subList(front, queue.size()).iterator();  }  public Integer peek() {   if (this.size() <= 0) { return null; }   return queue.get(front);  }  public Integer poll() {   if (this.size() <= 0) { this.clear(); return null; }   front++; return queue.get(front - 1);  }  public Integer remove() { return this.poll(); }  public boolean offer(Integer i) {   if (i < 0) { return false; }   queue.add(i); return true;  }  public boolean add(Integer i) { return this.offer(i); } } public class QA7585392No1 {  private static int readNumber(Scanner in) {   int ret = -1;   while (true) {    try { ret = new Integer(in.next()); break; }    catch (Exception e) { continue; }   }   return ret;  }  public static void main(String[] args) {   NaturalNumberQueue q = new NaturalNumberQueue();   Scanner in = new Scanner(System.in);   //Scanner in = new Scanner("0 4");   //Scanner in = new Scanner("5 4");   //Scanner in = new Scanner("3 4");   //Scanner in = new Scanner("1 4");   //Scanner in = new Scanner("2 1 1 3 3 4");   //Scanner in = new Scanner("2 1 1 2 2 1 2 3 1 3 3 3 3 3 3 4");   //Scanner in = new Scanner("2 -1 1 3 3 4");   //Scanner in = new Scanner("2 -1 1 3 2 1 1 3 1 3 4");   //Scanner in = new Scanner("3 2 1 1 2 2 1 3 3 2 -1 3 2 3 1 3 3 4");   while (true) {    System.out.println("(1) display (2) enqueue (3) dequeue (4) exit");    int select = readNumber(in);    if (select < 1 || select > 4) { continue; }    switch (select) {     case 1: System.out.println(q); break;     case 2:      Integer add = readNumber(in);      if (!q.add(add)) { System.err.println("0 > " + add); }      break;     case 3:      Object element = q.remove();      if (element == null) { System.err.println("empty"); }      else { System.out.println((Integer )element); }      break;     case 4: System.exit(0); break;     default: System.exit(1); break;    }   }  } }

全文を見る
すると、全ての回答が全文表示されます。
  • ora540
  • ベストアンサー率83% (5/6)
回答No.1

どこがどうわからないのか漠然としているのですが、キューの概念がわからないという意味でいいのでしたらこちらでどうでしょう?

参考URL:
http://www.atmarkit.co.jp/fjava/rensai4/java5eclipse19/java5eclipse19_1.html
全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • C言語の問題なのですが、分からないので教えて下さい

    以下のようなメニューを表示し,各項目の機能を実現して結果を表示するプログラムを作成せよ。 リストは1つとし,初期値は「15 4 32 1」である。 ・データの追加,削除を行う関数を作成する。 ・データの追加に関して,そのデータはリストの最後に挿入されるものとする。 ・データのソート(降順)を行う関数を作成する。 ・リストの平均値を計算し出力する関数を作成する。 ------表示例------- 1.データの追加 2.データの削除 3.データのソート(降順) 4.リストの平均値 5.終了 何を実行しますか: ------------------- ------実行例------- 1.データの追加 2.データの削除 3.データのソート(降順) 4.リストの平均値 5.終了 何を実行しますか:1 追加するデータを入力してください:10 リスト: 15 4 32 1 10 1.データの追加 2.データの削除 3.データのソート(降順) 4.リストの平均値 5.終了 何を実行しますか:4 リストの平均値:12.4 リスト: 15 4 32 1 10 1.データの追加 2.データの削除 3.データのソート(降順) 4.リストの平均値 5.終了 何を実行しますか:3 リスト: 32 15 10 4 1

  • c言語 プログラム メニュー

    C言語のプログラムでメニューの原型を作りたいと思っています。 内容としては ・標準ライブラリのみ ・関数を自作する ・関数の中身はprintfやscanfなど初歩的なもののみ ・メニューといっても1◯◯、2◯◯、3◯◯、4終了を表示(◯◯は適当)し、キーボードで1、2、3が入力されるともう一度メニューが表示されるというものです。(4のみプログラム終了) ご協力お願いします。

  • プログラムの追加と削除・・・に項目を表示させない方法

    [プログラムの追加と削除・・・に項目を表示させない方法] http://okwave.jp/qa1089819.html 上記を参照し、「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 以下の表示させたくないキーを削除」 または、 「窓の手をインストールし、アンインストールのタブから表示させたくない項目をリストから除外する」 を実施しましたが、プログラムの追加と削除上に表示されていた項目のアイコンが変更されただけで、リストには載ったままとなっています。 例えば、「Google日本語入力」をインストールしたのですが、 このレジストリキー({CE2015F4-B2B3-43BC-B774-44EBD6990D67})をバックアップ後削除・・としましたが、 プログラムの追加と削除のリストには表示されています。 また、上記レジストリを元に戻し、窓の手をインストール後、 アンインストールタブにて、「Google日本語入力」をリストから除外(左のリストから右のリストへ移動)としましたが、 やはりプログラムの追加と削除のリストには表示されたままとなっています。 MUICacheというキャッシュを自動的に保存する・・みたいな情報がありましたので、 こちらを削除してみましたが、やはり変わりません。 レジストリ削除後、レジストリ内を「Google日本語入力」という文字列で検索しても検索されないのですが、 依然として、プログラムの追加と削除リストに「Google日本語入力」が載ったままです。 他にリストから削除する方法はありますでしょうか。 よろしくお願いします。

  • プログラムリストの印刷について

    プログラムリストを印刷しようと思い、 Wordに貼り付けたのですが、 ページ数がすごい数になってしまいます。 そこで、プログラムリストを1/4サイズにして、 一枚の紙に4ページ分を出力しようと思ったのですが、 Word上でこれを実現することができません。 (印刷だけなら可能だが、ページ数などをつけたいので×) 1ページに4ページ分のドキュメントを挿入することは できないのでしょうか? Wordにはこの機能がなくても、 Word 以外のソフトで知っていたら教えてください。

  • VBプログラムを終了させないようにするには

    VB2005 WindowsXPでの開発を考えています。 メニューボックスは表示せず、終了ボタンからの終了にはパスワードの入力を求めるようにします。 しかしこれだけでは、タスクマネージャ等からの強制終了ができてしまいます。 強制終了も不可能にすることは可能でしょうか? また、できるのであればプログラム起動中は、Windowsの操作(エクスプローラやスタートメニューなど)をできないようにしたいと考えています。現状ではモーダル状態のフォームを最大化して表示させようと思っていますが、他に良い方法を御存知でしたらお願い致します。

  • このJAVAの問題の答えを教えてください

    入門書みたいなものにあった問題なんですが回答がない(なくした?)ので教えていただきたいです。 問題は ランダムに設定した数を当てるプログラムを作成しなさい なお、10回までに当たらなければ、正解を表示して終了すること。 数字を入力→100 大きすぎます、もう一度入力してください 2回目→50 小さいです、もう一度入力してください 3回目→60 小さいです、もう一度入力してください 75→あたりです、おめでとう。 (または・・・) 正解は75でした、またチャレンジしてね。 こういう風に表示するプログラムです。 すごく基本的なことだと思うのですが、よろしくお願いします。

  • キューの実現方法

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

  • プログラムの終了のエラー

    今PCの電源を切ろうとしたらエラーが出ました。 プログラムの終了-IEXPLORE.EXE このプログラムは応答していません。 ウインドウズに戻ってプログラムの状態を確認するには[キャンセル]をクリックして下さい。 プログラムをここで終了した場合は保存されていないデータが失われる可能性があります。 プログラムを直ちに終了するには[すぐに終了]をクリックしてください。 何も残ってないのです。 今キャンセルをしたら、右下の時計表示の所の 隠れてるメニュー(?)を出すアイコン(?) も消えてます。 ノートンの地球の絵も出てないです。 今日はお礼が出来ませんが、よろしくお願いします。 (終了が出来るのかなぁ・・・)

  • セルに追加されるデータをListBoxに表示させたい

    VBA初心者です エクセルのシートに入力されたデータを、ListBoxに表示させるプログラムを作っているのですが セルB5以下に入力されるB列のデータを、追加されたら、自動的にリストボックスにも追加されるというプログラムを作りたいと考えています ご指南、宜しくお願い致します

  • 使用プログラムが分りません?

    ホームページを作ろうとしています。 郵便番号入力後画面が変わり、該当する文字データを整列させて 表示するには、どのようなプログラムがいいのでしょうか? お教えいただきませんか? あと、郵便番号に該当する複数のデータを追加・修正・削除するのに ふさわしいプログラムは何かありますか? 自分では、マイクロソフトのアクセスでできるのではないかと 思っているのですが、ご教授いただきますようよろしくお願いします。