21xrx.com
2025-04-08 12:53:49 Tuesday
文章检索 我的文章 写文章
C++队列代码实现
2023-07-11 11:06:58 深夜i     21     0
C++ 队列 代码 实现

C++队列是一种常用的数据结构,可以用来存储一系列具有相同数据类型的元素,通常用于解决先进先出(FIFO)问题。在C++中,可以使用数组或链表等数据结构来实现队列。下面将介绍用数组实现队列的代码实现。

首先定义一个队列结构体,包含一个数组和队头、队尾指针:

struct Queue {
  int arr[MAXSIZE];  // 队列数组
  int front;     // 队头指针
  int rear;      // 队尾指针
};

接下来,针对此结构体实现入队和出队操作:

// 入队操作
void Enqueue(Queue &q, int data) {
  if (q.rear == MAXSIZE - 1)     // 队列已满
    cout << "Queue is full.";
    return;
  
  q.arr[++q.rear] = data;
}
// 出队操作
int Dequeue(Queue &q) {
  if (q.front == q.rear)       // 队列已空
    cout << "Queue is empty.";
    return -1;
  
  return q.arr[++q.front];
}

为了方便输出队列元素,还可以添加一个打印队列所有元素的函数:

// 打印所有队列元素
void PrintQueue(Queue &q) {
  if (q.front == q.rear)       // 队列已空
    cout << "Queue is empty.";
    return;
  
  for (int i = q.front + 1; i <= q.rear; i++) {
    cout << q.arr[i] << " ";
  }
}

使用上述代码实现的队列可以满足基本的入队、出队和打印队列元素的操作,下面是完整的代码实现:

#include<iostream>
using namespace std;
const int MAXSIZE = 100;  // 队列数组的最大长度
// 队列结构体
struct Queue {
  int arr[MAXSIZE];  // 队列数组
  int front;     // 队头指针
  int rear;      // 队尾指针
};
// 入队操作
void Enqueue(Queue &q, int data) {
  if (q.rear == MAXSIZE - 1)     // 队列已满
    cout << "Queue is full.";
    return;
  
  q.arr[++q.rear] = data;
}
// 出队操作
int Dequeue(Queue &q) {
  if (q.front == q.rear)       // 队列已空
    cout << "Queue is empty.";
    return -1;
  
  return q.arr[++q.front];
}
// 打印所有队列元素
void PrintQueue(Queue &q) {
  if (q.front == q.rear)       // 队列已空
    cout << "Queue is empty.";
    return;
  
  for (int i = q.front + 1; i <= q.rear; i++) {
    cout << q.arr[i] << " ";
  }
}
int main() {
  Queue myQueue;
  myQueue.front = myQueue.rear = -1;   // 初始化队头、队尾指针
  Enqueue(myQueue, 3);  // 入队
  Enqueue(myQueue, 5);
  Enqueue(myQueue, 7);
  cout << Dequeue(myQueue) << endl;  // 出队并打印出队元素
  PrintQueue(myQueue);  // 打印队列所有元素
  return 0;
}

  
  

评论区