おサラミログ

パズルの話とか、メモとか

(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(デック)を使うことを推奨されている。