您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 数据结构实验一学生信息存储方式-链式顺序
2015年4月19日星期日记1《数据结构》实验报告实验题目:学生信息存储方式:链式与线性表姓名:刘创学号:132054137班级:1320541系名:计算机工程系专业:计算机科学与技术指导老师:刘海静实验时间:2015年4月2日星期四实验地点:软件实验室【实验概述】1.实验目的及要求目的:掌握链表及线性表存储方式的有关知识要求:用单链表及线性表的相关性质进行处理相关程序2.实验原理单链表:用一组地址任意的存储单元存放线性表中的数据元素。数据域:元素本身信息。指针域:指示直接后继的存储位置线性表:线性表是n个数据元素的有限序列,记为:L=(a1,a2,…,an)就是利用一个一维数组存储3.实验环境(使用的软件)VC++6.0/VS2013【实验内容】1.实验算法设计实验一:学生信息采用链式存储方式实验二:学生信息采用线性表存储方式2.实验过程(源代码及描述、调试过程及分析)调试过程中,两个实验没有出现太大的问题,理论联系实际,多时间去实践方可等心应手。2015年4月19日星期日记2实验一:链式存储代码:liuchuang30_student_lq.cpp#includeiostream#includestringusingnamespacestd;typedefintElemType;#defineMAX100#defineERROR1#defineOK0typedefstructLNode{stringname;stringnum;structLNode*next;}LNode,*LinkList;LinkListS,p,q;//ElemTypeCreate_Initialize_List(LinkList&L)//你要初始化多少个同学的信息//头插法有缺点显示则是倒序显示//{//L=newLNode;//L-next=NULL;//头插法也可用尾插法//S=L;//建立带头结点/尾指针的单链表//ElemTypen;//cout请问你要初始化多少个学生的信息?n:(注:本程序n100)\n;//cinn;//if(n=1&&n=MAX)//{//for(inti=0;in;i++)//{2015年4月19日星期日记3//p=newLNode;//cout开始对第i+1个同学的信息进行初始化----\n;//cout请输入第i+1个同学的姓名:\n;//cinp-name;//初始化名字//cout请输入第i+1个同学的学号:\n;//cinp-num;//初始化学号//p-next=L-next;L-next=p;//S=p;//插入//}//returnOK;//}//else//{//cout你的赋值有误……\n;//returnERROR;//赋值指令有误//}//}ElemTypeCreate_Initialize_List(LinkList&L)//你要初始化多少个同学的信息/*尾插法*/{L=newLNode;L-next=NULL;S=L;//建立带头结点/尾指针的单链表ElemTypen;cout请问你要初始化多少个学生的信息?n:(注:本程序n100)\n;cinn;if(n=1&&n=MAX){for(inti=0;in;i++){p=newLNode;2015年4月19日星期日记4cout开始对第i+1个同学的信息进行初始化----\n;cout请输入第i+1个同学的姓名:\n;cinp-name;//初始化名字cout请输入第i+1个同学的学号:\n;cinp-num;//初始化学号p-next=S-next;S-next=p;S=p;//插入}returnOK;}else{cout你的赋值有误……\n;returnERROR;//赋值指令有误}}voidDisplay_List(LinkListL)//显示函数{p=L;ElemTypei=1;cout当前存储的所有学生信息列表如下\n;while(p-next){p=p-next;cout第i个同学的姓名:p-name\n;cout第i个同学的学号:p-num\n;i++;}}ElemTypeInsert_List(LinkList&L,ElemTypen,stringinsert_name,stringinsert_num)//第n个学生之前插入一个学生的信息姓名insert_name2015年4月19日星期日记5//插入学号:insert_num{//L为带头结点的单链表的头指针,//在链表中第n个结点之前插入新的元素insert_name&&insert_nump=L;intj=0;while(p&&jn-1){p=p-next;++j;//寻找第n-1个结点}if(!p||jn-1){cout你的插值指令有误……\n;returnERROR;}else{S=newLNode;//生成新的结点S-name=insert_name;S-num=insert_num;S-next=p-next;p-next=S;//插入returnOK;}}ElemTypeDelete_List(LinkList&L,ElemTypen)//删除该列表中的第n个学生的信息2015年4月19日星期日记6{//L为带头结点的单链表的头指针,//删除以L为头指针(带头结点)的单链表中第n个结点p=L;intj=0;while(p-next&&jn-1){p=p-next;++j;//寻找第n-1个结点}if(!(p-next)||jn-1){cout你的删除指令有误……\n;returnERROR;//删除位置不合理}else{q=p-next;p-next=q-next;//删除并释放结点deleteq;returnOK;}}intmain(){LinkListL;Create_Initialize_List(L);//创建并初始化列表cout赋值学生信息后的结果显示\n;2015年4月19日星期日记7Display_List(L);Insert_List(L,2,刘创,132054137);//第二个学生之前插入新学生信息cout在第二个学生之前插入新学生信息的结果显示\n;Display_List(L);Delete_List(L,2);//删除第二个元素cout在删除第二个学生后学生信息的结果显示\n;Display_List(L);system(pause);return0;}实验二:线性表存储方式代码:liuchuang17_student.cpp#includeiostream#includestring#defineMAX10typedefintElemType;#defineFalse-1;#defineTrue1;usingnamespacestd;typedefstruct{stringname;stringnum;}Sqlist_student;Sqlist_student*stu=newSqlist_student[MAX];//动态分配内存数组ElemTypeN=0;ElemTypesqlist_setvalue(){cout请输入你要初始化学生信息的量n(本程序中数组容量最大为10):\n;ElemTypen;2015年4月19日星期日记8cinn;if(n=1&&n=MAX){for(inti=0;in;i++){cout请输入第i+1个人的姓名:;cinstu[i].name;cout请输入第i+1个人的学号:;cinstu[i].num;N++;}returnTrue;}else{cout初始化指令错误\n;returnFalse;}}ElemTypesqlist_show()//显示函数{if(N1){returnfalse;}else{cout目前该学生信息列表的所有信息显示如下:\n;cout学生信息\t姓名\t学号;2015年4月19日星期日记9for(ElemTypei=0;iN;i++){coutendl;cout学生信息i+1\tstu[i].name\tstu[i].num\t;}cout\n------------------------------------------------------------------\n;returnTrue;}}ElemTypesqlist_insert(ElemTypen,stringinsert_name,stringinsert_num)//第几个学生n后插入学生信息内容e{if(n=1&&n=N){string*p_name,*q_name,*p_num,*q_num;p_name=&stu[N-1].name;q_name=&stu[n-1].name;p_num=&stu[N-1].num;q_num=&stu[n-1].num;while(p_nameq_name){*(p_name+2)=*p_name;p_name-=2;}while(p_numq_num){*(p_num+2)=*p_num;p_num-=2;2015年4月19日星期日记10}*(q_name+2)=insert_name;*(q_num+2)=insert_num;N++;returnTrue;}else{cout插入指令错误\n;returnFalse;}}ElemTypesqlist_delete(ElemTypei)//删除(哪一个或第几个)i学生的信息{if(i=1&&i=N){string*p_name,*q_name,*p_num,*q_num;p_name=&stu[N-1].name;q_name=&stu[i-1].name;p_num=&stu[N-1].num;q_num=&stu[i-1].num;while(p_name=q_name){*q_name=*(q_name+2);q_name+=2;}while(p_num=q_num){*q_num=*(q_num+2);2015年4月19日星期日记11q_num+=2;}N--;returnTrue;}else{cout删除指令错误\n;returnFalse;}}intmain(){system(color1b);sqlist_setvalue();sqlist_show();cout在第2个学生后插入新学生信息后的信息表:\n;sqlist_insert(2,lc,456);//第二个学生后插入新学生信息sqlist_show();cout在删除第2个学生信息元素后的结果:\n;sqlist_delete(2);//删除第二个学生的信息sqlist_show();delete[]stu;//释放动态内存数组空间system(pause);return0;}system(pause);return0;}2015年4月19日星期日记123.结果与结论(实验结果截图、结论总结)实验一结果:2015年4月19日星期日记13实验二结果:【实验评分】课堂表现实验结果报告书写总成绩:指导老师签名:日期:
本文标题:数据结构实验一学生信息存储方式-链式顺序
链接地址:https://www.777doc.com/doc-2334058 .html