21xrx.com
2024-12-22 20:13:27 Sunday
登录
文章检索 我的文章 写文章
C++数组实现队列
2023-07-10 17:07:40 深夜i     --     --
C++ 数组 队列 实现

队列是一种常见的数据结构,它具有先进先出(FIFO)的特点,常用于解决有关联的任务的调度问题。C++语言中,可以使用数组来实现队列。

数组定义了一组有序的元素,每个元素都有一个对应的下标。数组操作的时间复杂度比较低,因为数组元素的下标可以直接计算出来,因此可以快速索引和修改元素。

队列使用数组可以实现简单高效的数据结构。具体实现方法是,在数组中定义一个指向队头的front指针和一个指向队尾的rear指针,通过操作这两个指针来实现队列的进队和出队操作。

以下是一个简单的C++数组实现队列的示例代码:


#include<iostream>

using namespace std;

const int MAXSIZE = 10;//队列最大的长度

struct queue {

  int data[MAXSIZE];//队列中存储的元素

  int front;//队头指针

  int rear;//队尾指针

};

//初始化队列

void initQueue(queue &q)

  q.front = q.rear = 0;//队头指针和队尾指针都指向0

//判断队列是否为空

bool isEmpty(queue q)

  return q.front == q.rear;

//判断队列是否已满

bool isFull(queue q) {

  return (q.rear + 1) % MAXSIZE == q.front;

}

//向队列中添加元素

bool enQueue(queue &q, int value) {

  if (isFull(q)) //如果队列已满

    return false;//返回false表示添加失败

  

  q.data[q.rear] = value;//将元素添加到队尾

  q.rear = (q.rear + 1) % MAXSIZE;//队尾指针向后移动

  return true;//返回true表示添加成功

}

//从队列中取出元素

bool deQueue(queue &q, int &value) {

  if (isEmpty(q)) //如果队列为空

    return false;//返回false表示取出失败

  

  value = q.data[q.front];//取出队头元素

  q.front = (q.front + 1) % MAXSIZE;//队头指针向后移动

  return true;//返回true表示取出成功

}

int main() {

  queue q;

  initQueue(q);

  for (int i = 1; i < 11; i++) {

    enQueue(q, i);//向队列中添加元素

  }

  int value;

  while (deQueue(q, value)) //从队列中取出元素直至队列为空

    cout << value << " ";//打印取出的元素

  

  return 0;

}

以上代码演示了如何使用C++数组实现队列。在这个实现方法中,front指针和rear指针不断地在数组中循环,这使得队列可以循环利用数组空间,防止因为队列的满或空而浪费空间。

总结而言,C++数组实现队列是一种高性能的数据结构,可以在较短时间内完成大量的进队和出队操作。开发者可以根据实际需求来灵活掌握队列的使用。

  
  

评论区

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