#if 1 #include <iostream> #include <stdlib.h> using namespace std; class List { public: //默认构造函数集合大小为6个元素 List(); //构造函数重载,可接受参数,改变集合大小 List(int size) { Length=size; str=new int[Length+1]; //在堆里申请空间 cout<<"请输入整数集合(每输入一个按Enter):"; cout<<endl; //读入六位数据,重复数据删除 for(int i=0;i<Length;i++) { cin>>str[i]; //读入六位数据 //若输入数据重合,不录入该数据 for(int j=0;j<i;j++) { if(str[j]==str[i]) { i--; cout<<"输入非法,请再次输入,此次重复的集合元素是: "<<str[j]<<endl; break; } } } cout<<"集合为:"; print(); } //析构函数释放str, ~List() { delete []str; } //打印数据 void print(); //集合元素增加 void add(); //集合元素删除 void dlt(); //集合元素修改 void alter(); //查找元素 void Seek(); private: int *str; //集合 int Length; //数组集合的大小 }; //打印数据同时排序 void List::print() { //冒泡排序 for(int i=0;i<Length;i++) { for(int j=0;j<Length-i-1;j++) { if(str[j]>str[j+1]) { int temp=str[j]; str[j]=str[j+1]; str[j+1]=temp; } } } //打印数据 cout<<'{'; for(int i=0;i<Length;i++) { cout<<" "<<"'"<<str[i]<<"'"<<" "; } cout<<'}'<<endl; } //构造函数初始化 List::List() { //输入数据 Length=6; //初始化 str=new int[Length+1]; //在堆里申请空间 cout<<"请输入整数集合(每输入一个按Enter):"; cout<<endl; //读入六位数据,重复数据删除 for(int i=0;i<Length;i++) { cin>>str[i]; //读入六位数据 //若输入数据重合,不录入该数据 for(int j=0;j<i;j++) { if(str[j]==str[i]) { i--; cout<<"输入非法,请再次输入,此次重复的集合元素是: "<<str[j]<<endl; break; } } } cout<<"集合为:"; print(); } //增加数据 void List::add() { int idx=0,loop=0; //查找数据时记录集合中相同元素的数组下标 int data; //插入数据 do { cout<<"请输入你要增加的元素:"; cin>>data; for(int i=0;i<Length;i++) { if(data==str[i]) { idx=1; loop=1; } } if(!idx) { str[Length]=data; //输入数据不重合添加至数组末尾 Length++; //数据增加 loop=0; //退出循环 print(); //打印 } else //若输入重合重新输入 { cout<<"输入非法,数据重合!"<<endl; idx=0; } } while(loop); } //删除数据 void List::dlt() { int data,j=0,idx=0; //data是需要删除的数据,j是原数组下标从0开始,idx为元素存在的标志 cout<<"请输入你要删除的元素:"; cin>>data; for(int i=0;i<Length;i++) { if(data!=str[i]) //从第一个元素开始遍历,未找到删除数据进行数组赋值 { str[j]=str[i]; j++; } if(data==str[i]) idx=1; } if(idx) Length--;//数组元素减一 else cout<<"未找到该元素!!!"<<endl; print(); } //修改数据 void List::alter() { int temp,temp1,idx=0; //temp要修改的值,temp1为修改的数据,idx为重合数据小标 cout<<"请输入你要修改的值:"; cin>>temp; cout<<"请输入变更值:"; cin>>temp1; for(int i=0;i<Length;i++) { if(str[i]==temp1) { cout<<"变更数据非法,集合中已有该数据!!!"<<endl; idx=i; break; } } if(!idx) { str[Length]=temp1; Length++; } print(); } //查询数据 void List::Seek() { int i,data; //data为查找的数据 int idx=0; //idx存放下标 cout<<"请输入你要查找的数据: "; cin>>data; for(i=0;i<Length;i++) { if(str[i]==data) { idx=i+1; break; } } if(idx) cout<<"你查找的数据在"<<idx<<"个元素"<<endl; else cout<<"未找到该数据!!!"<<endl; } void main() { List str; //无参构造 str.add(); //增加元素 str.dlt(); //删除元素 str.alter(); //改变数据 str.Seek(); //查找数据 system("pause"); } #endif