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

实现过程:

测试文件:

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

using namespace std;

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


int main()
{
    Queue L;
    L.init();       //申请栈空间

    if(1==L.empty())        //判空
        cout<<"队空"<<endl;
    else
        cout<<"队非空"<<endl;

    if(1==L.full())     //判满
        cout<<"队满"<<endl;
    else
        cout<<"队非满"<<endl;

    L.in_push(L,3);     //入队操作
    L.in_push(L,4);
    L.in_push(L,5);
    L.in_push(L,6);
    L.in_push(L,7);

    L.show(L);              //遍历栈

    L.out_pop(L);           //出栈
    L.out_pop(L);
    L.show(L);

    cout<<"队列长度是:"<<L.in_size(L)<<endl;     //队列长度

    L.out_free(L);          //释放栈空间
    L.show(L);


    return 0;
}

源文件:

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

using namespace std;

        void Queue::init()     //申请队列空间
        {
            cout<<"请输入需要申请空间的大小>>>";
            cin>>size;
            data = new int[size];
            front = 0;
            tail = 0;
        }

        bool Queue::empty()            //判空
        {
            return front==tail;
        }

        bool Queue::full()    //判满
        {
            return (tail+1)%size==front;
        }

        void Queue::in_push(Queue &L,int data)  //入队
        {
            if(0==full())
            {
                L.data[tail]=data;
                tail=(tail+1)%size;
                cout<<data<<"入队成功"<<endl;
            }
            else
                cout<<data<<"队满,插入失败"<<endl;
        }

        void Queue::show(Queue &L)             //遍历队列
        {
            cout<<"队中的元素从队头到队尾是:";
            for(int i=front;i!=tail;i=(i+1)%size)
            {
                cout<<L.data[i]<<" ";
            }
            cout<<endl;
        }

        void Queue::out_pop(Queue &L)            //出队
        {
            if(0==empty())
            {
                cout<<L.data[front]<<"出队成功"<<endl;
                front=(front+1)%size;
            }
            else
                cout<<"队空,出队失败"<<endl;
        }

        int Queue::in_size(Queue &L)          //队列长度
        {
            return (tail+size-front)%size;
        }

        void Queue::out_free(Queue &L)      //释放栈空间
        {
            delete []L.data;
            L.data=nullptr;
            cout<<"队列已被释放"<<endl;
        }

头文件:

#ifndef HEADER_H
#define HEADER_H
class Queue
{
    private:
        int *data;
        int front;
        int tail;
    public:
        int size;

        void init();     //申请队列空间

        bool empty();            //判空

        bool full();    //判满

        void in_push(Queue &L,int data);  //入队

        void show(Queue &L);             //遍历队列

        void out_pop(Queue &L);            //出队

        int in_size(Queue &L);          //队列长度

        void out_free(Queue &L);     //释放栈空间
};
#endif // HEADER_H

实现效果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值