8.28作业

#include <iostream>

using namespace std;
using datatype = int;

#define MAX 30

//顺序表
struct SeqList
{

private:

    //指针
    datatype *data;

    //最大容量
    int size = 0;

    //数组长度
    int len = 0;

public:

    //初始化
    void SeqList_Init()
    {
        //最大容量
        size = MAX;
        //在堆区申请一个顺序表容量
        data = new datatype(size);
        //长度
        len = 0;
    };

    //判空
    bool SeqList_Empty()
    {
        return  len == 0;
    };

    //判满
    bool SeqList_Full()
    {
        return len == MAX;
    };

    //添加
    bool SeqList_Add()
    {
        //判满
        if(SeqList_Full())
        {
            cout<<"顺序表已满 无法添加数据"<<endl;
            return false;
        }

        //添加数据
        cout<<"请输入你要添加的数据:";
        cin>>data[len];
        len ++;

        //判空
        if(SeqList_Empty())
        {
            cout<<"顺序表为空 添加数据失败"<<endl;
            return  false;
        }

        return true;
    };

    //遍历
    bool SeqList_List()
    {
        //判空
        if(SeqList_Empty())
        {
            cout<<"顺序表为空 查询失败"<<endl;
            return  false;
        }

        //遍历
        for(int i=0;i<len;i++)
        {
            cout<<data[i]<<" ";
        }
        cout<<endl;

        return true;
    };

    //任意位置访问
    bool SeqList_Search()
    {
        //判空
        if(SeqList_Empty())
        {
            cout<<"顺序表为空 访问失败"<<endl;
            return  false;
        }

        //查询
        int n;
        cout<<"请输入你要查询的数据的位置:";
        cin>>n;
        cout<<data[n-1]<<endl;
        return true;
    };

    //任意位置插入
    bool SeqList_Insert()
    {
        //判空
        if(SeqList_Empty())
        {
            cout<<"顺序表为空 插入失败"<<endl;
            return  false;
        }

        //插入数据
        int temp,pos;
        cout<<"请输入你要插入的数据:";
        cin>>temp;
        cout<<"请输入你要插入的位置:";
        cin>>pos;
        if (pos < 0 || pos >= len + 1)
        {
            cout<<"请输入合理的位置"<<endl;
            return false;
        }
        len++;
        for (int i = len - 1; i >= pos; i--)
        {
            data[i] = data[i - 1];
        }
        data[pos - 1] = temp;

        return true;
    };

    //升序排序
    bool SeqList_Sort()
    {
        // 判空
        if (SeqList_Empty())
        {
            cout << "顺序表为空,无法排序。" << endl;
            return false;
        }

        // 升序
        for (int i = 0; i < len; i++)
        {
            for (int j = 0; j < len - i - 1; j++)
            {
                if (data[j] > data[j + 1])
                {
                    int temp = data[j];
                    data[j] = data[j + 1];
                    data[j + 1] = temp;
                }
            }
        }

        // 输出
        cout<<"排序后的表为:"<<endl;
        SeqList_List();
        return true;
    }

};

int main()
{
    //创造类
    SeqList SeqList;

    cout<<"1->初始化表"<<endl;
    cout<<"2->添加数据"<<endl;
    cout<<"3->查看数据"<<endl;
    cout<<"4->位置添加"<<endl;
    cout<<"5->升序排序"<<endl;

    while(1)
    {
        int key;
        cout<<"请输入你要进行的操作:";
        cin>>key;
        switch (key)
        {
        //初始化表
        case 1:
            SeqList.SeqList_Init();
            break;
            //添加数据
        case 2:
            SeqList.SeqList_Add();
            break;
            //查看数据
        case 3:
            SeqList.SeqList_List();
            break;
            //位置添加
        case 4:
            SeqList.SeqList_Insert();
            break;
            //升序排序
        case 5:
            SeqList.SeqList_Sort();
            break;
            //按位置查询
        case 6:
            SeqList.SeqList_Search();
            break;
        case 0:
            return 0;
        }
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值