C++泛化双端队列

循环双端队列双端队列可以在队首和队尾进行入队操作、出队操作的特殊队列。循环双端队列是充分利用空间,使用格外的数据存储队头和队尾,这里利用数组进行实现。循环双端队列(CircleQueue.h)/*************************************************************************> File Name : Ci...
摘要由CSDN通过智能技术生成

循环双端队列

双端队列可以在队首和队尾进行入队操作、出队操作的特殊队列。

循环双端队列是充分利用空间,使用格外的数据存储队头和队尾,这里利用数组进行实现。

循环双端队列(CircleQueue.h)

/*************************************************************************
> File Name       : CircleDeque.h
> Author          : Harold
> Mail            : 2106562095@qq.com
> Github          : www.github.com/Haroldcc
> Created Time    : 2020年03月07日  13时21分25秒
************************************************************************/
#ifndef CIRCLEQUEUE_H_
#define CIRCLEDEQUE_H_
#include <iostream>
#include <sstream>
#include "./myExceptions.h"
/***** 循环双端队列 *****/
/* 利用数组进行实现
 * 双端队列:表示头部和尾部都可以进行出入队操作
 */
template <typename T>
class CircleDeque
{
   
private:
    int front;      // 队头
    int size;       // 队内元素个数
    T *elements;    // 实现队列的数组
    int m_capacity; // 数组容量

    // 验证数组的容量,是否需要进行数组扩容
    void ensureCapacity(int capacity);
    // 传入队列中的索引,映射到数组上获取数组上的索引
    int index(int index);

public:
    // 构造函数
    CircleDeque(int initialCapacity = 10);
    // 析构函数
    ~CircleDeque() {
    delete[] this->elements; }

    int Size() const {
    return this->size; }
    bool isEmpty() const {
    return this->size == 0; }
    // 队尾入队
    void enQueueRear(const T &element);
    // 队头出队
    T deQueueFront();
    // 队头入队
    void enQueueFront(const T &element);
    // 队尾出队
    T deQueueRear();
    // 获取队头
    T &head() const;
    // 获取队尾
    T &tail() const;
    // 清空队列
    void clear();

    // 输出结果
    void output(std::ostream &out) const;
};

// 验证数组的容量,是否需要进行数组扩容
template <typename T>
void CircleDeque<T>::ensureCapacity(int capacity)
{
   
    int oldCapacity = this->m_capacity;
    if (oldCa
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值