21xrx.com
2024-06-02 22:34:17 Sunday
登录
文章检索 我的文章 写文章
C++队列代码实现
2023-07-11 11:06:58 深夜i     --     --
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;

}

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复