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)