2023/5/9

手动封装一个循环顺序队列类(Stack)

私有成员属性:存放队列的数组、两个变量分别记录队头和队尾下标

公有成员函数: 入队(push( type value ))

                           出队(pop())

                           展示(show)

求队列长度(size()):要求时间复杂度在常量级别

判满( bool full())

判空(bool empty())

运行结果:

2023/5/9_第1张图片

 

#include 

#define MAX_SIZE 7

using namespace std;

class Stack
{

private:

    int arr[MAX_SIZE];

    int front_sub = 0;

    int rear_sub = 0;


public:
    Stack():front_sub(0),rear_sub(0)
    {

    }

    int push(int value)            //入队
    {
        if(full())
            return -1;
        else
        {
            arr[rear_sub] = value;
            rear_sub = (rear_sub + 1) % MAX_SIZE;
            return 0;
        }
    }

    void pop()         //出队
    {
        cout << "出队";
        if(!empty())
            front_sub = (front_sub + 1) % MAX_SIZE;
    }

    void show()            //输出
    {
        if(!empty())
        {
            cout << "输出的结果是:";
            int i = front_sub;
            for(i;i!=rear_sub;i=(i+1)%MAX_SIZE)
            {
                cout << arr[i] << "  ";

            }

            cout << endl;
        }
    }

    int size()            //求长度
    {
        return (rear_sub + MAX_SIZE - front_sub)%MAX_SIZE;
    }

    bool full()            //判空
    {
        return (rear_sub + 1) % MAX_SIZE == front_sub;
    }

    bool empty()            //判满
    {
        return front_sub==rear_sub;
    }



};
int main()
{

    Stack s;
    int num = 0;

    int len = 0;

    cout << "请输入要入队的数据的个数:";
    cin >> len;

    cout << "请输入要入队的数据:";

    for(int i = 0;i> num;
        s.push(num);
    }

    s.show();//输出

    s.pop();//出队

    s.show();//输出
    cout<<"队列长度= "<

你可能感兴趣的:(数据结构,c++)