21xrx.com
2025-03-26 13:37:32 Wednesday
文章检索 我的文章 写文章
C++队列的定义及实现方法
2023-07-10 22:11:30 深夜i     12     0
C++队列 定义 实现方法 队头 队尾

C++队列是一种先进先出(FIFO)的数据结构,它是一种抽象数据类型(ADT),它的主要目的是将元素存储到容器中,并提供一种有效的方式来访问容器中的元素。

队列的定义:

在C++中,队列是一个容器,它包含了多个元素。元素按照添加到队列中的顺序进行排序,而且要求最先添加的元素最先被访问。这种访问方式称为FIFO。

实现方法:

在C++中,队列可以使用数组或链表来实现。在数组实现中,队列元素存储在一个线性结构中,可以使用指针或者索引来跟踪队列中的元素。在链表实现中,队列元素存储在链表的节点中,每个节点包含了当前元素和指向下一个节点的指针。

以下是使用数组实现的C++队列:

#include<iostream>
#define MAX_SIZE 100
using namespace std;
class Queue {
  private:
    int arr[MAX_SIZE];
    int front;
    int rear;
  public:
    Queue()
      front = -1;
      rear = -1;
    
    bool isEmpty() {
      return (front == -1 && rear == -1);
    }
    bool isFull() {
      return (rear == MAX_SIZE -1);
    }
    void enqueue(int val) {
      if(isFull())
        cout << "队列已满!" << endl;
        return;
      
      if(isEmpty())
        front = rear = 0;
       else {
        rear++;
      }
      arr[rear] = val;
    }
    void dequeue() {
      if(isEmpty())
        cout << "队列为空!" << endl;
        return;
       else if(front == rear)
        front = rear = -1;
       else {
        front++;
      }
    }
    int peek() {  
      if(isEmpty())
        cout << "队列为空!" << endl;
        return 0;
       else {
        return arr[front];
      }
    }
};
int main() {
  Queue q;
  q.enqueue(5);
  q.enqueue(3);
  q.enqueue(7);
  q.dequeue();
  q.dequeue();
  cout << "队列头元素:" << q.peek() << endl;
  return 0;
}

以上代码实现了一个基本的C++队列类,它使用了数组来存储元素,并提供了加入队列、弹出队列、查询队列头部元素的方法。虽然以上代码是使用数组来实现队列的,但链表实现方式和思路是一样的,只需要在节点中加入指针即可。

  
  

评论区

    相似文章