藍橋杯 演算法提高 佇列操作(Java解題)
阿新 • • 發佈:2019-02-13
問題描述
佇列操作題。根據輸入的操作命令,操作佇列(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
下面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); } } } }