21xrx.com
2025-04-03 10:35:57 Thursday
文章检索 我的文章 写文章
C++代码实现数据结构队列的基本操作
2023-07-08 10:07:37 深夜i     17     0
C++ 数据结构 队列 基本操作 实现

队列是一种常用的数据结构,它具有先进先出的特点。在很多实际应用中,队列被广泛使用。在C++中,可以使用数组、链表等数据结构来实现队列。

队列的基本操作包括入队、出队和判断队列是否为空。下面将介绍使用C++代码实现队列的基本操作。

1.使用数组实现队列

使用数组实现队列需要定义两个指针,一个指向队头,一个指向队尾。队头指针指向队列的第一个元素,队尾指针指向队列最后一个元素的下一个位置(因为队列有一个约定,即队尾指针总是指向一个空位置,以便区分队列是否已满)。数组实现队列的代码如下:

class ArrayQueue {
private:
  int front;
  int rear;
  int capacity;
  int* queue;
public:
  ArrayQueue(int capacity) {
    front = 0;
    rear = 0;
    this->capacity = capacity;
    queue = new int[capacity];
  }
  bool isEmpty()
    return front == rear;
  
  bool isFull()
    return rear == capacity;
  
  void enqueue(int data) {
    if (isFull()) {
      cout << "Queue is full\n";
      return;
    }
    queue[rear++] = data;
  }
  int dequeue() {
    if (isEmpty()) {
      cout << "Queue is empty\n";
      return INT_MIN;
    }
    int data = queue[front];
    front++;
    return data;
  }
};

2.使用链表实现队列

使用链表实现队列不需要考虑队列是否已满的问题。在链表尾部添加元素时,只需要将新元素添加到链表尾部,并将队尾指针指向新元素即可。出队时,只需要将队头指针指向下一个元素即可。链表实现队列的代码如下:

class Node {
public:
  int data;
  Node* next;
  Node(int data)
    this->data = data;
    next = nullptr;
  
};
class LinkedListQueue {
private:
  Node* front;
  Node* rear;
public:
  LinkedListQueue()
    front = nullptr;
    rear = nullptr;
  
  bool isEmpty()
    return front == nullptr;
  
  void enqueue(int data) {
    Node* node = new Node(data);
    if (isEmpty())
      front = node;
      rear = node;
      return;
    
    rear->next = node;
    rear = node;
  }
  int dequeue() {
    if (isEmpty()) {
      cout << "Queue is empty\n";
      return INT_MIN;
    }
    int data = front->data;
    Node* temp = front;
    front = front->next;
    if (front == nullptr)
      rear = nullptr;
    
    delete temp;
    return data;
  }
};

以上就是使用C++代码实现数据结构队列的基本操作的介绍。无论使用数组还是链表来实现队列,都有各自的优点和缺点。在实际应用中,应根据具体情况来选择使用哪种实现方式。

  
  

评论区

请求出错了