1. 程式人生 > >藍橋杯 演算法提高 佇列操作(Java解題)

藍橋杯 演算法提高 佇列操作(Java解題)

問題描述   佇列操作題。根據輸入的操作命令,操作佇列(1)入隊、(2)出隊並輸出、(3)計算隊中元素個數並輸出。 輸入格式   第一行一個數字N。
  下面N行,每行第一個數字為操作命令(1)入隊、(2)出隊並輸出、(3)計算隊中元素個數並輸出。 輸出格式   若干行每行顯示一個2或3命令的輸出結果。注意:2.出隊命令可能會出現空隊出隊(下溢),請輸出“no”,並退出。 樣例輸入 7
1 19
1 56
2
3
2
3
2 樣例輸出 19
1
56
0
no 資料規模和約定   1<=N<=50  

程式碼:

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		Queue<String> qu = new LinkedList<String>();//定義佇列
		int n = s.nextInt();
		for (int i = 0; i < n; i++) {
			int x = s.nextInt();
			if (x == 1) {
				String t = s.next();
				qu.offer(t);//入隊操作
			} else if (x == 2) {
				String str = qu.poll();//出隊操作
				if (str != null)
					System.out.println(str);
				else {
					System.out.println("no");
					break;//這一步是個坑,當隊中沒有元素時要直接結束程式,否則測試資料只能對60%
				}
			} else if (x == 3) {
				int k = 0;
				for (String q : qu) {
					k++;//計算隊中元素個數
				}
				System.out.println(k);
			}
		}

	}
}