- 締切済み
大学で出題されたプログラムの問題です
自然数(0を含む)のデータを保持するキューを実現し、そのプログラムリストを示せ。ただし、メニューに「(1)キュー内のデータの表示(2)データの追加;追加データの入力(3)データの取り出し;取り出しデータの表示(4)終了」を含み実現せよ。 どうしてもわからなかった問題でした。 回答よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- MillenniuM
- ベストアンサー率58% (42/72)
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)
どこがどうわからないのか漠然としているのですが、キューの概念がわからないという意味でいいのでしたらこちらでどうでしょう?