21xrx.com
2024-12-22 20:53:13 Sunday
登录
文章检索 我的文章 写文章
C++编写队列的实现
2023-06-27 00:20:19 深夜i     --     --
C++ 队列 编写 实现

队列是一种常见的数据结构,它可以在一端添加元素,在另一端删除元素,常用于模拟先进先出(FIFO)的操作。在C++中,可以使用各种方式实现队列,本文将介绍一种基于数组的队列实现。

队列的数据结构定义:


#define MAX_SIZE 100 //队列的最大长度

class Queue {

private:

  int data[MAX_SIZE];

  int front, rear; //队首和队尾指针

public:

  Queue(); //构造函数

  bool isEmpty(); //判断队列是否为空

  bool isFull(); //判断队列是否已满

  void enqueue(int x); //入队操作

  void dequeue(); //出队操作

  int frontData(); //求队首元素

};

在数据结构中,我们定义了一个私有变量data和两个指针front和rear。其中data是存储队列元素的数组,front指向队首元素(即下一次出队元素),rear指向下一个入队位置(即下一次入队元素)。在实现中,我们需要一个固定的数组大小MAX_SIZE,因此需要预先定义队列的最大长度。

队列的函数实现:

构造函数:


Queue::Queue()

  front = rear = 0;

在构造函数中,我们将队列的front和rear初始化为0,表示队列为空。

判断队列是否为空:


bool Queue::isEmpty()

  return front == rear;

当队列的front和rear指向同一位置时,表示队列为空。

判断队列是否已满:


bool Queue::isFull()

  return rear == MAX_SIZE;

当rear指向最后一个位置时,表示队列已满。

入队操作:


void Queue::enqueue(int x) {

  if (isFull())

    cout << "Queue is full!" << endl;

    return;

  

  data[rear++] = x;

}

在入队操作中,我们首先检查队列是否已满,如果是,则提示队列已满,不能继续入队。如果队列未满,则将元素插入队列的尾部,并将rear指针后移一位。

出队操作:


void Queue::dequeue() {

  if (isEmpty())

    cout << "Queue is empty!" << endl;

    return;

  

  front++;

}

在出队操作中,我们首先检查队列是否为空,如果是,则提示队列为空,不能进行出队操作。如果队列非空,则将指向队首的front指针后移一位,表示删除队首元素。

求队首元素:


int Queue::frontData() {

  if (isEmpty())

    cout << "Queue is empty!" << endl;

    return -1;

  

  return data[front];

}

在求队首元素操作中,我们首先检查队列是否为空,如果是,则提示队列为空,并返回-1。如果队列非空,则返回队列的front指针所指向元素的值。

以上就是基于数组实现的队列的实现方法。通过使用数组和指针,我们可以实现一个简单而有效的队列数据结构。当然,队列还有其他实现方式,比如基于链表的队列实现等,不同的实现方式有不同的特点和优缺点,根据实际需求进行选择。

  
  

评论区

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