21xrx.com
2024-12-22 17:25:43 Sunday
登录
文章检索 我的文章 写文章
C++代码实现数据结构队列的基本操作
2023-07-08 10:07:37 深夜i     --     --
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++代码实现数据结构队列的基本操作的介绍。无论使用数组还是链表来实现队列,都有各自的优点和缺点。在实际应用中,应根据具体情况来选择使用哪种实现方式。

  
  

评论区

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