holyya.com
2025-09-04 08:07:32 Thursday
登录
文章检索 我的文章 写文章
如何用C++实现队列?
2023-07-06 04:15:09 深夜i     --     --
C++ 队列 实现

队列是一种常用的数据结构,它遵循“先进先出”的原则,类似于现实生活中排队等待服务的情境。在C++中,我们可以使用数组或链表实现队列。本文将介绍如何使用C++实现队列。

一、使用数组实现队列

数组实现队列需要两个重要参数:队头front和队尾rear。初始时,front=0,rear=-1。每次入队时,先将rear加1,再将数据存入rear位置。每次出队时,将front加1,将front位置的数据弹出。需要注意的是,数组实现的队列需要预设数据长度,因此在使用过程中需要特别关注空间利用率以及数据存储量的限制。

核心代码如下:


class Queue{

  private:

    int arr[MAX_SIZE];

    int front, rear;

  public:

    Queue()

      front = 0;

      rear = -1;

    

    void push(int data){

      if(rear == MAX_SIZE-1)

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

        return;

      

      arr[++rear] = data;

    }

    void pop(){

      if(front>rear)

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

        return;

      

      front++;

    }

    int front_(){

      if(front>rear)

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

        return -1;

      

      return arr[front];

    }

}

二、使用链表实现队列

使用链表实现队列比较灵活,可以根据需要动态增加或删除节点。与数组实现队列相比,链表实现可以克服数据存储量的限制,适合大量数据的存储。链表实现队列需要一个头节点以及尾节点,每次入队时,将数据插入到尾节点之后,尾节点指向新加入的节点。每次出队时,弹出头节点之后,头节点指向下一个节点。

核心代码如下:


class Queue{

  private:

    struct Node{

      int data;

      Node* next;

    };

    Node* head;

    Node* tail;

  public:

    Queue()

      head = nullptr;

      tail = nullptr;

    

    void push(int data){

      Node* newNode = new Nodedata;

      if(head == nullptr)

        head = newNode;

        tail = newNode;

        return;

      

      tail->next = newNode;

      tail = newNode;

    }

    void pop(){

      if(head == nullptr)

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

        return;

      

      Node* temp = head;

      head = head->next;

      delete temp;

    }

    int front_(){

      if(head==nullptr)

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

        return -1;

      

      return head->data;

    }

}

总结:

以上就是用C++实现队列的基本方法和代码示例。无论是使用数组还是链表实现队列,我们需要关注的都是队头、队尾以及队列长度等属性的控制。了解队列的基本性质和实现方法,可以帮助我们更好地理解和应用队列,并在工程实践中发挥更好的作用。

  
  

评论区

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