题目
题目描述
根据输入的操作命令,操作队列:1 入队、2 出队并输出、3 计算队中元素个数并输出。1≤N≤50。
输入描述
第一行一个数字 N。 接下来 N 行,每行第一个数字为操作命令:1入队、2 出队并输出、3 计算队中元素个数并输出。
输出描述
若干行每行显示一个 2 或 3 命令的输出结果。注意:2.出队命令可能会出现空队出队(下溢),请输出“no”,并退出。
输入输出样例
示例
输入
输出
运行限制
解题
源码
C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| #include <iostream> #include <queue> using namespace std; int main() { queue<int> q; int num, op, temp; cin >> num; while (num > 0) { num--; cin >> op; if (op == 1) { cin >> temp; q.push(temp); } if (op == 2) { if (q.empty()) { cout << "no"; continue; } cout << q.front() << endl; q.pop(); } if (op == 3) { cout << q.size() << endl; } } return 0; }
|
Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| from queue import *
q = Queue() n = eval(input()) for i in range(n): s = list(map(int,input().split())) if s[0] == 1: q.put(s[1]) elif s[0] == 2: if not q.empty(): a = q.get() print(a) else: print('no') break elif s[0] == 3: print(q.qsize())
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| n = eval(input()) q = [] for i in range(n): s = list(map(int,input().split())) if s[0] == 1: q.append(s[1]) elif s[0] == 2: if len(q) > 0: q.reverse() a = q.pop() print(a) q.reverse() else: print('no') break elif s[0] == 3: print(len(q))
|
总结
C++版
- 太简单不解释,只要掌握了容器的用法就出不了错
1 2 3 4 5 6 7 8
| queue<Type> q; q. push(item); q.front(); q.pop(); q.back(); q.size(); q.empty();
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| #define MAXQSIZE 100003 struct myqueue{ int data[MAXQSIZE]; int head; int rear; bool init(){ head = rear = 0; return true; } int size(){ return (rear - head + MAXQSIZE) % MAXQSIZE; } bool empty(){ if(size()==0) return true; else return false; } bool push(int e){ if((rear + 1) % MAXQSIZE == head ) return false; data[rear] = e; rear = (rear + 1) % MAXQSIZE; return true; } bool pop(int &e){ if(head == rear) return false; e = data[head]; head = (head + 1) % MAXQSIZE; return true; } int front(){ return data[head]; } };
|
Python版
- 太简单不做过多解释
- 唯一要注意的就是list版本op=2的时候要做两次reverse