#include#include #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 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 << "ttt顺序表" << 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 << "数据输入错误,请重新输入" < 以上就是本次文档的全部内容,如果您不厌恶这篇文章,请点一个赞再走,如果您有什么不懂的地方或者某方面想看的内容,请在评论区评论或私聊我,我会尽我最大的努力,解决您的问题
欢迎分享,转载请注明来源:内存溢出
赞
(0)
打赏
微信扫一扫
支付宝扫一扫
![微信扫一扫](/view/img/theme/weipay.png)
![支付宝扫一扫](/view/img/theme/alipay.png)
灭霸打了一个响指,我就学会了C语言的「分支与循环语句」
上一篇
2022-12-17
输入时缓存区相关问题
下一篇
2022-12-17
评论列表(0条)