21xrx.com
2024-11-05 17:34:37 Tuesday
登录
文章检索 我的文章 写文章
C++数组实现队列
2023-07-05 11:21:50 深夜i     --     --
C++ 数组 队列 实现

队列是一种常见的数据结构,它具有“先进先出”的特性,即一端插入数据,另一端删除数据。在实际应用中,队列常被用于缓存数据、处理消息等。而在C++语言中实现队列,则需要使用数组等数据结构来实现。

C++数组实现队列的基本思路是将数组作为队列的底层数据结构,使用两个指针分别指向队列首尾。队列指针可以表示队列的空/满状态,当队首指针等于队尾指针时,队列为空,当队尾指针指向最后一个元素时,队列为满。具体实现方法如下:

1.定义数组和指针:首先要定义一个数组,用来存放队列中的数据,同时要定义两个指针front和rear,分别指向队首和队尾位置。

2.队列的入队操作:入队操作是将元素插入队列的末尾,即rear指针的位置,每插入一个元素rear指针都要向后移动一个位置。

3.队列的出队操作:出队操作是将队列中的元素从队首删除,并返回该元素的值,每删除一个元素front指针都要向后移动一个位置。

4.判断队列是否为空/满:判断队列为空/满的方法是比较front和rear指针的值,当它们相等时,队列为空;当rear+1等于front时,队列为满。

具体参考实现代码如下:


#define MAXSIZE 100 // 定义队列最大长度

template <class T>

class Queue

{

  public:

    Queue();    // 构造函数

    bool empty();  // 队列是否为空

    bool full();  // 队列是否为满

    void push(T);  // 入队操作

    T pop();    // 出队操作

  private:

    T m_queue[MAXSIZE]; // 存放数据的数组

    int m_front;    // 队首指针

    int m_rear;     // 队尾指针

};

template <class T>

Queue<T>::Queue()

  m_front = 0;

  m_rear = 0;

template <class T>

bool Queue<T>::empty()

  return m_front == m_rear;

template <class T>

bool Queue<T>::full()

{

  return m_rear + 1 == m_front;

}

template <class T>

void Queue<T>::push(T data)

{

  if (!full())

  {

    m_queue[m_rear++] = data;

    if (m_rear == MAXSIZE)

      m_rear = 0;

  }

}

template <class T>

T Queue<T>::pop()

{

  if (!empty())

  {

    T data = m_queue[m_front++];

    if (m_front == MAXSIZE)

      m_front = 0;

    return data;

  }

}

在实际使用中,我们可以通过调用入队操作push来实现元素的插入,通过调用出队操作pop来实现元素的删除。此外,需要注意队列是否为空/满,避免出现访问越界的情况。

总之,使用数组实现队列是C++中一种常见的数据结构操作。通过定义数组和指针,我们可以方便地对队列进行入/出队操作,实现队列的快速插入和删除。

  
  

评论区

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