hqyj—C++day2

 循环顺序队列类

#include <iostream>
#define MAXSIZE  8

using namespace std;

typedef int  datatype;

class stack
{
public:

bool full_stack() //判断对满
{
    if((last+1)%MAXSIZE == front)
        return true;
    else
        return false;
}

bool empty_stack() //判断对空
{
    if(last == front)
        return true;
    else
        return false;
}

void push(datatype value)   //入队
{
    if(!full_stack())
    {
        arr[last] = value;
        last = (last+1)%MAXSIZE;
    }else
    {
        cout<<"队列已满"<<endl;
        return ;
    }
}

void pop()             //出队
{
    if(!empty_stack())
    {
        front = (front+1)%MAXSIZE;
    }else
    {
        cout<<"队列为空"<<endl;
        return;
    }
}

void output()           //遍历
{
    if(empty_stack())
    {
        cout<<"队列为空"<<endl;
        return ;
    }
    cout<<"遍历结果"<<endl;
    for(int i = front;i != last;(i++)%MAXSIZE )
    {
        cout<<"第"<<(i+9-front)%MAXSIZE<<"个数据 :";
        cout<<arr[i] <<endl;
    }
}

int size_stack()        //求队列长度
{
    return (MAXSIZE - front + last)%MAXSIZE;
}

private:
    datatype arr[MAXSIZE];
    int front = 0;
    int last = 0;
};

int main()
{
    stack s1;//
    datatype a; //存储输入数据
    int n = 0;  //存储数据个数
    while(n<=0||n>8)
    {
        cout<<"输入数据个数"<<endl;
        cin>>n;
    }
    //循环输入数据
    for(int i = 0;i<n;i++)
    {
        cout<<"第"<<i+1<<"个数据 :";
        cin>>a;
        getchar();
        s1.push(a);
    }
    //遍历数据
    s1.output();
    //删除数据并遍历数据
    cout<<"删除数据"<<endl;
    s1.pop();
    s1.output();
    //队列长度
    cout <<"队列长度 :"<<s1.size_stack()<<endl;
    return 0;
}

运行结果

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值