定义dequeue容器的几张方式
时间: 2024-09-15 20:15:09 浏览: 39
队列是一种先进先出(First In First Out, FIFO)的数据结构,而在C++中,`deque`(双端队列)是一个非常方便的容器,可以用于创建队列。以下是几种定义`deque`作为队列的方式:
1. **直接使用**:
```cpp
#include <deque>
std::deque<int> queue; // 创建一个空的整数队列
```
2. **初始化时指定容量**:
```cpp
std::deque<int, std::allocator<int>> queue(10); // 创建一个初始容量为10的整数队列
```
3. **使用范围初始化**:
```cpp
std::deque<int> queue = {1, 2, 3, 4, 5}; // 使用数组元素初始化队列
```
4. **从其他容器转换**:
```cpp
std::vector<int> vec = ...; // 假设有一个vector
std::deque<int> queue(vec.begin(), vec.end()); // 将vector的内容复制到deque
```
相关问题
定义循环队列数据结构,定义初始化函数InitQueue()为该循环队列申请连续的内存空间,并完成该循环队列入队列的函数 EnQueue()与出队列的函数DeQueue()的编写与测试。
循环队列是一种环形的队列数据结构,它具有队列的基本特点,即先进先出(FIFO)的特性,同时还具有循环利用内存空间的特点。
循环队列的数据结构可以用一个数组来实现,同时需要两个指针front和rear来分别指向队列的头部和尾部,以便实现队列的入队和出队操作。
初始化函数InitQueue()可以按照以下代码实现:
```
#define MAXSIZE 100 // 循环队列的最大容量
typedef struct {
int data[MAXSIZE]; // 数组存储队列元素
int front; // 队列头指针
int rear; // 队列尾指针
} Queue;
// 初始化队列
void InitQueue(Queue *q) {
q->front = q->rear = 0;
}
```
EnQueue()函数用于将元素插入到队列的尾部,代码如下:
```
// 入队操作
void EnQueue(Queue *q, int x) {
// 判断队列是否已满
if ((q->rear + 1) % MAXSIZE == q->front) {
printf("Queue is full.\n");
return;
}
// 将元素插入到队尾
q->data[q->rear] = x;
q->rear = (q->rear + 1) % MAXSIZE;
}
```
DeQueue()函数用于从队列的头部删除元素,并返回被删除的元素的值,代码如下:
```
// 出队操作
int DeQueue(Queue *q) {
// 判断队列是否为空
if (q->front == q->rear) {
printf("Queue is empty.\n");
return -1;
}
// 将队头元素出队
int x = q->data[q->front];
q->front = (q->front + 1) % MAXSIZE;
return x;
}
```
下面是一个测试循环队列的示例程序:
```
#include <stdio.h>
int main() {
Queue q;
InitQueue(&q);
EnQueue(&q, 1);
EnQueue(&q, 2);
EnQueue(&q, 3);
EnQueue(&q, 4);
printf("DeQueue: %d\n", DeQueue(&q));
printf("DeQueue: %d\n", DeQueue(&q));
EnQueue(&q, 5);
EnQueue(&q, 6);
printf("DeQueue: %d\n", DeQueue(&q));
printf("DeQueue: %d\n", DeQueue(&q));
printf("DeQueue: %d\n", DeQueue(&q));
EnQueue(&q, 7);
EnQueue(&q, 8);
printf("DeQueue: %d\n", DeQueue(&q));
printf("DeQueue: %d\n", DeQueue(&q));
printf("DeQueue: %d\n", DeQueue(&q));
printf("DeQueue: %d\n", DeQueue(&q));
return 0;
}
```
输出结果为:
```
DeQueue: 1
DeQueue: 2
DeQueue: 3
DeQueue: 4
Queue is empty.
DeQueue: -1
DeQueue: -1
EnQueue: 7
EnQueue: 8
DeQueue: 7
DeQueue: 8
Queue is empty.
DeQueue: -1
```
阅读全文