Homework Introduction
数组模拟队列
// 队列:先进先出
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int q[N], head = 1, tail;
int main() {
// 入队
q[++tail] = 12;
// 输出队伍长度
cout << tail - head + 1 << endl;
// 输出队首
if (head <= tail)
cout << q[head] << endl;
// 出队
if (head <= tail)
head++;
return 0;
}
queue
// 队列:先进先出
#include <bits/stdc++.h>
using namespace std;
// STL 队列 <queue>
// 定义一个队列
queue<int> q; // 定义了一个存储整数类型的队列
int main() {
// 入队
q.push(12);
// 输出队列的长度
cout << q.size() << endl;
// 判断是否为空
if (q.empty())
cout << "空" << endl;
// 取队首元素
if (!q.empty())
cout << q.front() << endl;
// 出队
if (!q.empty())
q.pop();
return 0;
}
机器翻译
// 栈: 后进先出
// 队列 : 先进先出
#include <bits/stdc++.h>
using namespace std;
const int N = 1e3 + 10;
int q[N], head = 1, tail;
bool vis[N];
int m, n, ans, tmp;
int main() {
cin >> m >> n;
for (int i = 1; i <= n; i++) {
cin >> tmp;
if (vis[tmp])
continue;
ans++;
// 入内存
if (tail - head + 1 >= m) { // 判断内存是否满了
vis[q[head]] = 0; // 取消在内存中的标记
head++;
}
// 入内存
vis[tmp] = 1; // 标记tmp 存放在内存中
q[++tail] = tmp;
}
cout << ans;
return 0;
}
deque
// 双端队列
// 两边都可以入和出
#include <bits/stdc++.h>
using namespace std;
deque<int> q; // 定义一个双端队列
int main() {
// 插入,队首和队尾
q.push_back(12); // 队尾插入
q.push_front(1); // 队头插入
// 判断是否为空
if (q.empty())
cout << "空" << endl;
// 输出元素,输出之前得判断是否为空
cout << q.front() << endl; // 队首
cout << q.back() << endl; // 队尾元素
// 弹出
q.pop_back(); // 弹出队尾
q.pop_front(); // 弹出队首
// 容量 ,
cout << q.size() << endl;
// 使用 [] 访问元素
cout << q[1] << endl;
return 0;
}
Problem
Please claim the assignment to see the problems.
- Status
- Live...
- Problem
- 42
- Open Since
- 2025-8-6 0:00
- Deadline
- 2025-8-31 23:59
- Extension
- 24 hour(s)