21xrx.com
2024-09-19 10:10:40 Thursday
登录
文章检索 我的文章 写文章
使用C++数组实现队列
2023-07-06 09:39:17 深夜i     --     --
C++ 数组 队列 实现

队列是一种数据结构,它基于“先进先出”(FIFO)的原则。它由两个主要方法组成:enqueue(将元素添加到队列末尾)和dequeue(从队列的前面移除元素)。

使用C++数组实现队列是一种常见的方法,其主要思想是将数组看作是一条环形的队列。因此,队列的头部和尾部可以分别被表示为反复使用的数组的开始和结束。

为了有效地实现队列,我们需要考虑以下因素:

1. 定义队列的大小。

2. 创建一个数组来存储队列元素。

3. 跟踪队列的元素数量。

4. 跟踪队列的头部和尾部位置。

下面是一个使用C++数组实现队列的样例代码:


#include <iostream>

using namespace std;

#define SIZE 5

class Queue{

  private:

    int items[SIZE], front, rear;

  public:

    Queue()

      front = -1;

      rear = -1;

    

    bool isFull(){

      if(front == 0 && rear == SIZE - 1)

        return true;

      

      if(front == rear + 1)

        return true;

      

      return false;

    }

    bool isEmpty(){

      if(front == -1)

        return true;

      

      else

        return false;

      

    }

    void enqueue(int element){

      if(isFull()){

        cout<<"\nQueue is full!!"<<endl;

      }

      else{

        if(front == -1)

          front = 0;

        

        rear = (rear + 1) % SIZE;

        items[rear] = element;

        cout<<"\nInserted "<<element<<" into Queue"<<endl;

      }

    }

    void dequeue(){

      if(isEmpty()){

        cout<<"\nQueue is empty!!"<<endl;

      }

      else{

        cout<<"\nDeleted element "<<items[front]<<endl;

        if(front == rear)

          front = -1;

          rear = -1;

        

        else{

          front = (front + 1) % SIZE;

        }

      }

    }

    void display(){

      if(isEmpty()){

        cout<<"\nQueue is empty!!"<<endl;

      }

      else{

        cout<<"\nFront -> "<<front;

        cout<<"\nItems -> ";

        for(int i = front; i != rear; i = (i+1)%SIZE){

          cout<<items[i]<<" ";

        }

        cout<<items[rear];

        cout<<"\nRear -> "<<rear<<endl;

      }

    }

};

int main(){

  Queue q;

  

  q.dequeue();

  

  q.enqueue(1);

  q.enqueue(2);

  q.enqueue(3);

  q.enqueue(4);

  q.display();

  

  q.enqueue(5);

  q.display();

  

  q.dequeue();

  q.dequeue();

  q.display();

  

  q.enqueue(6);

  q.enqueue(7);

  q.display();

  

  q.enqueue(8);

  return 0;

}

上述代码中,我们定义了一个包含常量大小的C++数组。在构造函数中,我们初始化队列的头部和尾部位置为-1。

我们使用了三个主要函数来实现队列的操作:enqueue,dequeue和display。enqueue函数用于向队列中添加元素,dequeue函数用于从队列的前面删除元素,而display函数可以在控制台上输出整个队列。

我们使用isFull和isEmpty函数来检查队列是否已满或为空。如果队列已满,则添加元素时会显示“队列已满”的消息,而如果队列为空,则删除元素时会显示“队列为空”的消息。

在enqueue函数中,我们首先使用isFull函数来检查队列是否已满。如果队列未满,则将元素添加到队列的尾部。如果队列第一次进行添加,则将头部值设置为0。我们将rear值向前移动,并将元素插入到rear位置。

在dequeue函数中,我们首先使用isEmpty函数来检查队列是否为空。如果队列不为空,则删除队列的第一个元素。我们将front值向前移动,并打印从队列中删除的元素的值。如果该元素是队列中的惟一元素,则将front和rear值重新设置为-1。否则,我们将front值向前移动。

最后,在display函数中,我们使用isEmpty函数来检查队列是否为空。如果队列不为空,则打印队列中的所有元素。

使用C++数组实现队列是一种高效的方法,可以处理大量的元素和数据。它在许多不同的领域中得到了广泛的应用,如操作系统、文件系统、编译器设计等。

  
  

评论区

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