理论基础 —— 队列 —— 循环队列

【实现类】

const int MAXSIZE=100;
template<class T>
class cirQueue{
public:
    cirQueue();
    ~cirQueue();
    void push(T x);//入队
    T pop();//出队
    bool empty();//判断队列是否为空
    T getFront();//获取队首元素
    int length();//获取队列长度
private:
    T data[MAXSIZE];
    int head,tail;
};

【入队】

template <class T>
void cirQueue<T>::push(T x){//入队
    if((tail+1)%MAXSIZE==head)
        throw "上溢";
    tail=(tail+1)%MAXSIZE;
    data[tail]=x;
}

【出队】

template <class T>
T cirQueue<T>::pop(){//出队
    if(head==tail)
        throw "下溢";
    head=(head+1)%MAXSIZE;
    return data[head];
}

【判断是否为空】

template<class T>
bool cirQueue<T>::empty(){//判断队列是否为空
    if(head==tail)
        return true;
    return false;
}

【获取队首元素】

template<class T>
T cirQueue<T>::getFront(){//获取队首元素
    if(head==tail)
        throw "下溢";
    int pos=(head+1)%MAXSIZE;
    return data[pos];
}

【获取队列长度】

template<class T>
int cirQueue<T>::length(){//获取队列长度
    if(head==tail)
        throw "下溢";
    int len=(tail-head+MAXSIZE)%MAXSIZE;
    return len;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值