C++封装一个循环顺序队列,并封装其相应的操作:判空、判满、入队列、出队、遍历队、求队列长度、销毁

C++封装一个循环顺序队列,并封装其相应的操作:判空、判满、入队列、出队、遍历队、求队列长度、销毁

目录

头文件

源文件

测试文件

实现结果

头文件

#ifndef HEADER_H
#define HEADER_H
using namespace std;
#define MAX 7
typedef int datatype;

class Queue{
private:
    datatype *data;
    int front;
    int tail;
public:
    //申请队列空间,并初始化
    void init();
    //判空
    bool queue_empty();
    //判满
    bool queue_full();
    //入队列
    void queue_push(datatype num);
    //出队列
    void queue_pop();
    //遍历队列
    void queue_show();
    //求队列长度
    int queue_size();
    //销毁
    void queue_delete();
};
#endif // HEADER_H

源文件

#include <iostream>
#include <header.h>

//申请队列空间,并初始化
void Queue::init()
{
    data=new int[MAX];
    front=0;
    tail=0;
    cout <<"创建成功" <<endl;
}
//判空
bool Queue::queue_empty()
{
    return front==tail;
}
//判满
bool Queue::queue_full()
{
    return (tail+1)%MAX == front;
}
//入队列
void Queue::queue_push(datatype num)
{
    if(queue_full())
    {
        cout <<"队列已经满了,入队失败" <<endl;
    }
    //把数据放在队尾位置
    data[tail]=num;
    //队尾后移
    tail=(tail+1)%MAX;
    cout << "入队成功"<<endl;
}
//出队列
void Queue::queue_pop()
{
    if(queue_empty())
    {
        cout <<"队列已经空,出队失败" <<endl;
    }
    //从队头出队
    //队头后移
    front=(front+1)%MAX;
    cout << "出队成功"<<endl;
}
//遍历队列
void Queue::queue_show()
{
    //判断逻辑
    if(queue_empty())
    {
        cout << "遍历失败"<<endl;
        return;
    }
    //遍历逻辑
    cout <<"队伍中从对头到队尾元素分别是:";
    for(int i=front; i!=tail; i=(i+1)%MAX)
    {
        cout << data[i];
    }
    cout <<"\n";
}

//求队列长度
int Queue::queue_size()
{
    cout <<"队列长度为  ";
    return (tail+MAX-front)%MAX;
}
//销毁
void Queue::queue_delete()
{
    front=tail=0;
    delete []data;
    data=nullptr;
    cout<<"销毁队列成功"<<endl;
}

测试文件

#include <iostream>
#include <header.h>
int main()
{
    //创建类变量
    Queue queue;
    //申请队列空间,并初始化
    queue.init();
    //入队列
    queue.queue_push(2);
    queue.queue_push(5);
    queue.queue_push(8);
    queue.queue_push(7);
    queue.queue_push(2);
    queue.queue_push(4);
    //遍历队列
    queue.queue_show();
    //出队列
    queue.queue_pop();
    //遍历队列
    queue.queue_show();
    //求队列长度
    cout <<queue.queue_size()<< endl;
    //销毁
    queue.queue_delete();
    //遍历队列
    queue.queue_show();
    return 0;
}

实现结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值