本文共 2687 字,大约阅读时间需要 8 分钟。
要求
不要使用STL 封装线性表类,提供插入,删除,查找等操作 线性表实现使用数组描述方法(顺序存储结构) 描述 设通讯录中每一个联系人的内容有:姓名、电话号码、班级、宿舍。由标准输入读入联系人信息,使用线性表中操作实现通讯录管理功能,包括:插入、删除、编辑、查找(按姓名查找);键盘输入一班级,输出通讯录中该班级中所有人的信息。 格式 每个操作的第一个数为操作数(插入-0,删除-1,编辑-2,查找-3,输出一个班所有人员信息-4),具体格式如下: 0 姓名 电话 班级 宿舍 插入一条记录 1 姓名 根据姓名删除一条记录 2 姓名 编辑项目 项目新值 根据姓名编辑一条记录(编辑项目为1到3的整数,1代表编辑电话,2代表编辑班级,3代表编辑宿舍) 3 姓名 根据姓名查找,找到输出1,未找到输出0 4 班级 输出该班级的所有成员的宿舍号的异或值 其中查找操作当找到相应的人时输出1,未找到输出0。输出一个班级的人员信息时输出所有成员的宿舍号的异或值。输入数据保证合法。 输入 第一行一个n(1<=n<=20000), 代表接下来操作的数目。接下来n行代表各项操作。 输出 当遇到查找和输出一个班所有人员信息操作时输出。 样例 输入 28 0 Evan 57298577609 1 65 0 WINNIE 37367348390 4 1 3 Evan 4 6 3 WINNIE 1 Evan 4 7 1 WINNIE 3 MARYAM 3 CAMERON 3 TZIVIA 0 OMAR 16447001130 6 55 4 8 4 2 3 JADEN 3 ELIZABETH 2 OMAR 1 79409905568 3 JOSHUA 2 OMAR 1 8978214817 1 OMAR 3 Azaan 3 MARIA 0 HANNAH 94060479192 5 98 3 HEIDY 1 HANNAH 0 Axel 92066832927 3 70 1 Axel 3 TIFFANY 输出 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 限制 1s#include#include using namespace std;struct student{ string name; string phone; int grade; int dorm; }; template void Changelength(T *&a,int oldlength,int newlength){ T *temp=new T[newlength]; int number=min(oldlength,newlength); copy(a,a+number,temp); delete []a; a=temp; } class Linearlist{ public: Linearlist(int n=10); ~Linearlist() { delete [] stu;} void insert(string &name,string &phone,int &grade,int &dorm); void erase(string &name); void edit1(string& name,string& new_index1); void edit2(string& name,int decision,int& new_index2); bool serch(string &name); int output(int &grade); private: struct student*stu; int capacity; int listsize; } ;Linearlist::Linearlist(int n){ stu=new student[n]; capacity=n; listsize=0;}//插入0 void Linearlist::insert(string &name,string &phone,int &grade,int &dorm){ if(capacity==listsize) { Changelength(stu,capacity,capacity*2); capacity*=2; } stu[listsize].name=name; stu[listsize].phone=phone; stu[listsize].grade=grade; stu[listsize].dorm=dorm; listsize++;}//删除1void Linearlist::erase(string &name){ int i=0; while(stu[i].name!=name&&i =listsize) return 0; else return 1;}//输出 4int Linearlist::output(int &grade){ int index=0; for(int i=0;i >n; Linearlist L; int *a=new int[n]; for(j=0;j >x; switch(x){ case 0: cin>>name; cin>>phone; cin>>grade; cin>>dorm; L.insert(name,phone,grade,dorm); break; case 1: cin>>name; L.erase(name); break; case 2: cin>>name; cin>>decision; if(decision==1) { cin>>new_index1; L.edit1(name,new_index1); } else{ cin>>new_index2; L.edit2(name,decision,new_index2);} break; case 3: cin>>name; a[k]=L.serch(name); k++; break; case 4: cin>>grade; a[k]=L.output(grade); k++; break; default: break; }} for(int i=0;i
转载地址:http://bfwzi.baihongyu.com/