博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构实验3
阅读量:3951 次
发布时间:2019-05-24

本文共 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/

你可能感兴趣的文章
高效率的危害
查看>>
寻找边缘性创新
查看>>
让创意瞄准市场
查看>>
高效经理人应具有的八个重要习惯
查看>>
优秀的领导者能读懂人才
查看>>
大智若愚也是领导力
查看>>
android如何编译MTK的模拟器
查看>>
android如何添加AP中要使用的第三方JAR文件
查看>>
利用sudo命令为Ubuntu分配管理权限
查看>>
Ubuntu下几个重要apt-get命令用法与加速UBUNTU
查看>>
Ubuntu中网页各种插件安装命令
查看>>
使用tar命令备份Ubuntu系统
查看>>
ubuntu flash 文字乱码解决方案
查看>>
在ubuntu中运行exe文件
查看>>
ubuntu安装命令
查看>>
和上司沟通必备8个黄金句
查看>>
联系查看两张卡的未接电话记录
查看>>
Python 3 之多线程研究
查看>>
APP第三方登录实现步骤
查看>>
KVO & KVC 比较 - KVC
查看>>