#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;
}
8.28作业
最新推荐文章于 2024-11-06 11:05:01 发布