(Java)スタックとキュー
競技プログラミングで幅優先探索をやりたく、キューを実装しようとした。
C++だとStackもQueueもpushとpopで操作できるっぽいから、
Javaでも同じようにpushとpopを使ったらキューがスタックとして動作して死んだ。
Javaではキューの操作はaddとremove
System.out.println("\nQueue"); Queue<Integer> que = new ArrayDeque<>(); for(int i=0; i<10; i++){ que.add(i); } while(!que.isEmpty()){ System.out.print(que.remove()+" "); } //Queue //0 1 2 3 4 5 6 7 8 9 System.out.println("\nDeque as Stack"); Deque<Integer> deque = new ArrayDeque<>(); for(int i=0; i<10; i++){ deque.push(i); } while(!deque.isEmpty()){ System.out.print(deque.pop()+" "); } //Deque as Stack //9 8 7 6 5 4 3 2 1 0 System.out.println("\nDeque as queue"); for(int i=0; i<10; i++){ deque.add(i); } while(!deque.isEmpty()){ System.out.print(deque.remove()+" "); } //Deque as queue //0 1 2 3 4 5 6 7 8 9
Stackクラスも用意されているけど、両端キューであるDeque(デック)を使うことを推奨されている。