-1-《软件技术基础》实验报告实验名称:顺序表的操作班级学号姓名第9周星期2、5,6节成绩一、实验目的:1、掌握顺序表结构的实现方式;2、掌握顺序表常用算法的实现;3、熟悉利用顺序表解决问题的一般思路;4、参照给定的顺序表的程序样例,验证给出的顺序表的常见算法,领会顺序表结构的优点和不足。二、实验内容:1、设计一个静态数组存储结构的顺序表,要求编程实现如下任务:(1)建立一个顺序表,首先依次输人整数数据元素(个数根据需要键盘给定)。(2)删除指定位置的数据元素(指定元素位置通过键盘输入),再依次显示删除后的顺序表中的数据元素。(3)查找指定数据的数据元素(指定数据由键盘输入),若找到则显示位置,若没有找到则显示0。2、使用顺序表实现一个电话本的管理程序,电话本中的每条记录包括学号、姓名、手机号码和固定电话四项。要求实现菜单、初始化、添加、删除和显示等功能。三、实验结果:-2-四、实验中遇到的问题及解决方法:第一次编写C++,感觉力不从心,回去多看看PPT。-3-五、实验心得体会:对顺序表的一些常用语句不熟悉,对顺序表的整体思路理解不深刻以后要加强练习附:源程序(自行编写或修改的程序。若为修改程序请注明修改部分的功能,若为书上实例则可不附。)#includeiostream#includestring#includestdlib.h#includeiomanip#defineMAXSIZE20usingnamespacestd;intnum;typedefstruct{stringstudent_number;stringname;stringtel;stringhome_phone;intid;}TEL;voidshuaxin(TEL*);voiddelet(TEL*);-4-voidfind(TEL*);voidshow(TEL*);intmain(void){intchoose;TELList[MAXSIZE];while(1){cout***************************欢迎来到XXX电话本系统*********************endl;cout1.初始化并建立endl;cout2.删除endl;cout3.查找endl;cout4.显示全部endlendl;cinchoose;system(cls);while(choose1||choose4){cout输入错误,数字1-4,请重新输入!endl;cinchoose;system(cls);}-5-switch(choose){case1:shuaxin(List);break;case2:delet(List);break;case3:find(List);break;case4:show(List);break;}//system(cls);}return0;}voidshuaxin(TEL*list){inti,j;for(i=0;iMAXSIZE;i++){list[i].id=i+1;list[i].home_phone=none;list[i].name=none;list[i].student_number=none;list[i].tel=none;-6-}system(cls);cout初始化成功,现在开始建表:endl;cout请输入需要建立的电话个数:(小于MAXSIZE)endl;cinnum;while(num1||numMAXSIZE){system(cls);cout输入错误,请重新输入endl;cinnum;}system(cls);cout请依次输入学生的学号,姓名,移动电话,家庭电话endl;for(j=1;j=num;j++){coutj'.';cinlist[j-1].student_number;cinlist[j-1].name;cinlist[j-1].tel;cinlist[j-1].home_phone;coutendl;-7-}if(num==(j-1)){system(cls);cout建立表完毕!endl;}}voiddelet(TEL*list){intj,i=0;cout请输入你需要删除的序号endl;cinj;while(j0||jnum){cout输入错误,请重新输入endl;cinj;}while(list[i].id!=j)i++;for(j=i;jnum-1;j++){-8-list[j].name=list[j+1].name;list[j].tel=list[j+1].tel;list[j].student_number=list[j+1].student_number;list[j].home_phone=list[j+1].home_phone;}list[j].home_phone=none;list[j].name=none;list[j].student_number=none;list[j].tel=none;num--;system(cls);cout删除完毕endl;}voidfind(TEL*list){stringtelnum;inti,key=0;cout请输入你需要查找的电话号码endl;cintelnum;-9-system(cls);for(i=0;iMAXSIZE;i++){if(telnum==list[i].tel||telnum==list[i].home_phone){if(key==0)cout依次学号姓名移动电话家庭电话endl;coutlist[i].id'.';coutsetw(12)list[i].student_number;coutsetw(10)list[i].name;coutsetw(14)list[i].tel;coutsetw(10)list[i].home_phone;coutendl;key=1;}}if(key==0)cout未找到此电话号码endl;}-10-voidshow(TEL*list){inti;cout现在有num个电话号码endl;cout依次学号姓名移动电话家庭电话endl;for(i=0;inum;i++){coutlist[i].id'.';coutsetw(12)list[i].student_number;coutsetw(10)list[i].name;coutsetw(14)list[i].tel;coutsetw(10)list[i].home_phone;coutendl;}cout输出完毕endl;}-11-《软件技术基础》实验报告实验名称:链表的操作(一)班级学号姓名第10周星期2、5,6节成绩一、实验目的:1、掌握单链表结构的实现方式;2、掌握单链表常用算法的实现。二、实验内容:1、设计一个链表,要求编程实现如下任务:(1)建立一个链表,首先依次输人整数数据元素(个数根据需要键盘给定)。(2)删除指定值的结点(指定值通过键盘输入),再依次显示删除后的链表中的数据元素。(3)查找指定值的结点(指定数据由键盘输入),若找到则显示查找成功,若没有找到则显示查找失败。(4)在第i个节点(i由键盘输入,i=0表示插入的结点作为第1个结点)之后插入一个元素为x的节点。三、实验结果:四、实验中遇到的问题及解决方法:-12-编写过程中经常把C语言和C++的语句形式搞混乱,课后认真了解了C++后得以解决。五、实验心得体会:对单链表的实现方式和常用算法掌握不足,对C++部分基本概念不熟悉,需课后补强附:源程序(自行编写或修改的程序。若为修改程序请注明修改部分的功能,若为书上实例则可不附。)#includeiostream.h#includestdio.h#includestdlib.hstructLNode{intdata;structLNode*next;};LNode*find(LNode*head,intx){LNode*p=head-next;while(p!=NULL&&p-data!=x)p=p-next;-13-returnp;}voidInsert(LNode*head,inti,intx){if(i1)cout不存在第i个位置;else{LNode*p=head;intk=0;while(p!=NULL&&ki-1){p=p-next;k++;}if(p==NULL)couti超出链表最大可插入位置endl;else{LNode*s=newLNode;s-data=x;-14-s-next=p-next;p-next=s;}}}voidDelete(LNode*head,inti){if(i1)cout不存在第i个元素;else{LNode*p=head;LNode*q;intk=0;while(p!=NULL&&ki){q=p;p=p-next;k++;}if(p==NULL)-15-couti超出链表长度endl;else{q-next=p-next;deletep;}}}voidmain(){LNode*head,*p;head=newLNode;head-next=NULL;inti,x,y;cout请输入5个数,每个书中间空一格:endl;for(i=1;i=5;i++){cinx;Insert(head,i,x);}i=0;-16-cout请输入需要删除的节点(1~5):endl;cini;Delete(head,i);cout删除的节点i后输出为:endl;p=head-next;while(p!=NULL){coutp-data;p=p-next;}coutendl;cout请输入需要查找的指定值的结点:;cinx;if(find(head,x)!=NULL)cout查找成功endl;elsecout查找失败endl;coutendl;i=0;x=0;cout请输入在i节点及元素xendl;cinix;-17-Insert(head,i,x);cout显示:endl;p=head-next;while(p!=NULL){coutp-data;p=p-next;}coutendl;}-18-《软件技术基础》实验报告实验名称:链表的操作(二)班级学号姓名第11周星期2、5,6节成绩一、实验目的:1、熟悉利用线性链表解决问题的一般思路;2、参照给定的链表的程序样例,验证给出的链表的常见算法,了解单链表结构的优点和不足。二、实验内容:1、使用链表实现一个电话本的管理程序,电话本中的每条记录包括姓名和电话两项。要求实现菜单管理、记录的添加、删除和显示等功能。三、实验结果:-19-四、实验中遇到的问题及解决方法:对查找名字、查找号码等功能掌握不清,问老师和同学后基本清楚五、实验心得体会:体会到了C++的神奇与精彩,但是自己还不能实现这种神奇,达到这种精彩,但是增强了自身兴趣附:源程序(自行编写或修改的程序。若为修改程序请注明修改部分的功能,若为书上实例则可不附。)#includestdio.h#includestdlib.h#includemalloc.h#includestring.h#defineLENsizeof(TEL)-20-#defineSIZEsizeof(Size)intn=0;typedefstructtel{charname[10];l