#include <iostream>
#include <string>
#include"cstdlib"
using namespace std;
class name
{
public:
//构造函数
name() {
lenght = 0;
data = 0;
}
//析构函数
~name() {
delete[data]arr;//释放内存
arr = nullptr;//使其成为野指针
}
void newName(int data);//指针初始化,申请data大小的内存
void name_cout();//输出
void name_cin();//输入
int Name_lenght();//返回lenght的值
void name_add(int x,int num);//插入数据,第几位,数据
int name_reduce(int x);//删除数据,第几位,返回数据
int name_query(int x);//查询数据,第几位,返回值
//int name_cha2(int x);//查询数据,那位数,在什么位置
int name_modify(int x, int num);//修改数据,第几位,修改后的数据,返回被修改的数据
void paixu_name();//排序
private:
int *arr;//指针,申请动态内存
int lenght;//指针长度
int data;//指针最大值
};
void name::newName(int data)
{
arr = new int[data];//为指针申请内存
//保护
if (!arr)
{
cout << "空间申请失败" << endl;
return ;
}
lenght = data;
this->data = data;
}
void name::name_cout()
{
if (!arr)
{
cout << "数据错误,输出失败输出失败" << endl;
return;
}
for (int i = 0; i < lenght; i++)
{
cout << arr[i] << " ";
}
cout << endl;
cout << "最大长度是" << data << ",现在长度是" << lenght << endl;
}
//第一次输入
void name::name_cin()
{
for (int i = 0; i < lenght; i++)
{
cin >> arr[i];
}
}
int name::Name_lenght()
{
return lenght;
}
//插入数据,指针,第几位,数据
void name::name_add(int x, int num)
{
if (x<0 || x>lenght)
{
cout << "数据插入错误,操作失败" << endl;
return;
}
data += 1;
lenght++;
this->arr = (int*)realloc(this->arr, sizeof(int)*lenght);
//保护
if (!arr)
{
cout << "空间申请失败" << endl;
return ;
}
for (int i=lenght; i >=x; i--)
{
arr[i] = arr[i - 1];
}
arr[x - 1] = num;
}
//删除数据,指针,第几位,数据
int name::name_reduce(int x)
{
if (x<0 || x>lenght)
{
cout << "数据删除错误,操作失败" << endl;
return NULL;
}
int w = arr[x - 1];
for (int i = x;i<lenght; i++)
{
arr[i-1] = arr[i];
}
lenght--;
this->arr = (int*)realloc(this->arr, sizeof(int)*lenght);
return w;
}
//修改数据,第几位,修改后的数据,返回被修改的数据
int name::name_modify(int x, int num)
{
if (x<0 || x>lenght)
{
cout << "数据修改错误,错操作失败" << endl;
return NULL;
}
int w = arr[x - 1];
arr[x - 1] = num;
return w;
}
//查询数据,第几位,返回值
int name::name_query(int x)
{
if (x<0 || x>lenght)
{
cout << "数据查询错误,操作失败" << endl;
return NULL;
}
return arr[x-1];
}
// 查询数据,那位数,在什么位置
void name::paixu_name()
{
for (int i = lenght - 1; i > 0; i--)
{
for (int j = 0; j < i; j++)
{
if (arr[j] > arr[j + 1])
{
arr[j] = arr[j] + arr[j + 1];
arr[j + 1] = arr[j] - arr[j + 1];
arr[j] = arr[j] - arr[j + 1];
}
}
}
}
int main()
{
int w/*位置*/, num/*数据*/,x=0;
name a;//创建一个对象
cout << "\t\t\t顺序表" << endl;
cout << "要输入多少个数据" << endl;
cin >> num;
a.newName(num);
cout << "请输入数据:" << endl;
a.name_cin();
cout << "顺序表现在的数据是:" << endl;
a.name_cout();
while (x!= -1)
{
cout << "*********************************************************************************" << endl;
cout << "1、添加数据" << endl;
cout << "2、删除数据" << endl;
cout << "3、修改数据" << endl;
cout << "4、查找数据" << endl;
cout << "5、输出数据" << endl;
cout << "6、排序并输出数据" << endl;
cout << "*********************************************************************************" << endl;
cout << "请做出选择(输入‘-1’结束)" << endl;
cin >> x;
system("cls");
switch (x)
{
case 1:cout << "请输入增加数据的位置和数据:" << endl;
cin >> w >> num;
a.name_add(w, num);
break;
case 2:cout << "请输入删除的要数据位置" << endl;
cin >> w;
num = a.name_reduce(w);
cout << "删除的的数据是:";
cout << num << endl;
break;
case 3:cout << "顺序表现在的数据是:" << endl;
a.name_cout();
cout << "请输入要修改的数据位置和数据" << endl;
cin >> w >> num;
num = a.name_modify(w, num);
cout << "被替换前的数据是:";
cout << num << endl;
break;
case 4:cout << "请输入要查找的第几位数的数据" << endl;
cin >> w;
num=a.name_query(w);
cout << "这位置上的数据是:" << num << endl;
break;
case 5:cout << "顺序表现在的数据是:" << endl;
a.name_cout();
break;
case 6: a.paixu_name();
cout << "顺序表现在的数据是:" << endl;
a.name_cout();
break;
default:cout << "数据输入错误,请重新输入" <<endl;
}
}
system("pause");
return 0;
}
以上就是本次文档的全部内容,如果您不厌恶这篇文章,请点一个赞再走,如果您有什么不懂的地方或者某方面想看的内容,请在评论区评论或私聊我,我会尽我最大的努力,解决您的问题