实验1 线性表及其应用实验报告_第1页
实验1 线性表及其应用实验报告_第2页
实验1 线性表及其应用实验报告_第3页
实验1 线性表及其应用实验报告_第4页
实验1 线性表及其应用实验报告_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

暨南大学本科实验报告专用纸课程名称数据结构成绩评定实验项目名称线性表及其应用指导教师王晓明实验项目编号实验一实验项目类型综合性实验地点南海楼601学生姓名朱芷漫学号2010051875学院信息科学技术学院系计算机专业计算机科学与技术实验时间2011年9月7日18:30午~9月7日20:30午温度℃湿度实验目的和要求实验目的:熟练掌握线性表基本操作的实现及应用实验要求:在上机前写出全部源程序完毕并调试完毕。实验原理和主要内容1.建立4个元素的顺序表SqList={2,3,4,5},实现顺序表的基本操作;在SqList={2,3,4,5}的元素4与5之间插入一个元素9,实现顺序表插入的基本操作;在SqList={2,3,4,9,5}中删除指定位置(i=3)上的元素,实现顺序表删除的操作。2.利用顺序表完成一个班级的一个学期的课程的管理:能够增加、删除、修改学生的成绩记录。三、主要仪器设备PC机,WindowsXP操作平台,VisualC++调试分析学生课程管理系统的调试过程中发现一些错误,主要是参数设置的问题,经过修改,错误得到排除。测试结果顺序表学生课程管理系统附录(源程序)1.顺序表的操作#include<iostream.h>#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineINFEASIBLE-1#defineOVERFLOW-2typedefintStatus;typedefintElemType;#defineLIST_INIT_SIZE10#defineLISTINCREMENT2typedefstructshunxubiao{ ElemType*list; intsize; intMaxsize;}SqList;intInitList_Sq(SqList&L){//构造一个空的线性表L。L.list=newElemType[LIST_INIT_SIZE];if(!L.list)returnOVERFLOW;//存储分配失败L.size=0; //长度为0L.Maxsize=LIST_INIT_SIZE;//初始存储容量returnOK;}//InitList_SqintInsertList_Sq(SqList&L,inti,ElemTypee){ ElemType*p,*q; if(i<1||i>L.Maxsize+1)returnERROR; q=&(L.list[i-1]);//q指示插入位置 for(p=&(L.list[L.Maxsize-1]);p>=q;--p) *(p+1)=*p;//插入位置及之后的元素右移*q=e;//插入e ++L.size;//表长增1 returnOK;}//ListInsert_SqintLocateElem_Sq(SqListL,ElemTypee){//在顺序表中查询数据元素e,若存在,则返回它的位序,否则返回0 inti=1;//i的初值为第1元素的位序 ElemType*p=L.list;//p的初值为第1元素的存储位置 while(i<=L.size&&*p!=e) { ++i; ++p; } if(i<=L.size)returni; elsereturn0;}StatusInsertList_Sq(SqList&L,ElemTypee,ElemTypef,ElemTypeg){ inti=LocateElem_Sq(L,e); intj=LocateElem_Sq(L,f); if(i==j-1) { InsertList_Sq(L,j,g); returnOK; } elsereturnERROR;}intGetList_Sq(SqListL,inti){ if(i>0&&i<=L.size) { returnL.list[i]; } else returnERROR;}StatusListDelete_Sq(SqList&L,inti,ElemType&e){ ElemType*p,*q; if((i<1)||(i>L.Maxsize))returnERROR; p=&(L.list[i-1]);//p为被删除元素的位置 e=*p;//被删除元素的值赋给e q=L.list+L.size-1;//表尾元素的位置 for(++p;p<=q;++p) *(p-1)=*p;//被删除元素之后的元素左移 --L.size;//表长减1 returnOK;}//ListDelete_SqvoidCreate_Sq(SqList&L){ cout<<"创建顺序表"<<endl; cout<<"请输入元素个数:"; intcount; cin>>count; for(inti=0;i<count;i++) { cout<<"请输入第"<<i+1<<"个数:"; cin>>L.list[i]; ++L.size; }}voidPrint_Sq(SqList&L){ cout<<"输出顺序表:"<<endl; for(inti=0;i<L.size;i++) cout<<L.list[i]<<"";}voidmain(){ SqListmyList; ElemTypee,f,g,sc; InitList_Sq(myList); Create_Sq(myList); cout<<"请输入要插入顺序表的元素:"<<endl; cin>>g; cout<<"请输入新插入元素在顺序表中哪两个元素之间:"<<endl; cin>>e>>f; if(!InsertList_Sq(myList,e,f,g)) cout<<"插入的位置不对!"<<endl; cout<<"删除一个元素,请输入要删除的位序:"<<endl; intwx; cin>>wx; if(!ListDelete_Sq(myList,wx,sc)) cout<<"删除元素失败!"<<endl; Print_Sq(myList);}2.学生课程管理系统#include<iostream>#include<windows.h>#include<conio.h>usingnamespacestd;constintLIST_INIT_SIZE=3;constintLISTINCREMENT=5;structstudent{ intStuNum; intCouNum; intScore; char*name;};classStuCourse{ student*L; intlength; intlistsize; public: StuCourse(); voidListAdd(studente); voidListDelete(inti); voidListRewrite(studente); voidListPrint(inti); voidListPrintAll(); voidcopy(student*a,student*b);};StuCourse::StuCourse() { L=newstudent[LIST_INIT_SIZE]; if(!L) { cout<<"内存不足"<<endl; } else { length=0;listsize=LIST_INIT_SIZE; }}voidStuCourse::ListAdd(studente) { student*p; intt,n,i; boolflag=true; if(e.StuNum<1) cout<<"插入位置错误"<<endl; else { for(t=0;t<length&&(L+t)->StuNum<e.StuNum;t++); if((L+t)->StuNum==e.StuNum) cout<<"此学号已存在"<<endl; else { if(length==listsize) { p=newstudent[listsize+LISTINCREMENT]; if(!p) { cout<<"内存不足"<<endl;flag=false; } else { for(i=0;i<length;i++) copy(p+i,L+i); deleteL;L=p;listsize+=LISTINCREMENT; } } if(flag==true) { if(t<length) for(n=length;n>t;n--) copy(L+n,L+n-1); copy(L+t,&e);length++; } } }}voidStuCourse::ListDelete(inti){ intt; for(t=0;t<length&&(L+t)->StuNum!=i;t++); if(t==length) cout<<"此记录不存在"<<endl; else { while(t<length) copy(L+t,L+t+1);t++; length--; }}voidStuCourse::ListRewrite(studente){ intt; for(t=0;t<length&&(L+t)->StuNum!=e.StuNum;t++); if((L+t)->StuNum==e.StuNum) copy(L+t,&e); else cout<<"此记录不存在"<<endl;}voidStuCourse::ListPrint(inti) { intt; for(t=0;t<length&&(L+t)->StuNum!=i;t++); if((L+t)->StuNum!=i) cout<<"此记录不存在"<<endl; else { cout<<"学号\t姓名\t\t课程号\t成绩"<<endl; cout<<(L+t)->StuNum<<'\t'<<(L+t)->name<<'\t'<<(L+t)->CouNum<<"\t\t"<<(L+t)->Score<<endl; }}voidStuCourse::ListPrintAll(){ inti; cout<<"学号\t姓名\t\t课程号\t成绩"<<endl; for(i=0;i<length;i++) cout<<(L+i)->StuNum<<'\t'<<(L+i)->name<<'\t'<<(L+i)->CouNum<<"\t\t"<<(L+i)->Score<<endl;}voidStuCourse::copy(student*a,student*b){ a->StuNum=b->StuNum; a->CouNum=b->CouNum; a->Score=b->Score; a->name=b->name;}voidwrite(inta,char*p,intb,intc,student&d){ d.StuNum=a; =p; d.CouNum=b; d.Score=c;}intmain(){ inti,j,k,n=0; studente; charc='a'; charname[50][20]; StuCourseClassA; while(c!='q'&&c!='Q') { cout<<"\t欢迎使用学生成绩管理系统"<<endl; cout<<"A.打印成绩单\t\tB.查询成绩"<<endl; cout<<"C.添加记录\t\tD.删除记录"<<endl; cout<<"E.修改记录\t\tQ.退出"<<endl; c=getch(); switch(c) { case'a': case'A':ClassA.ListPrintAll();getch();break; case'b': case'B':cout<<"请输入要查询的学号:";cin>>i;ClassA.ListPrint(i);getch();break; case'c': case'C':cout<<"请输入添加记录:";cin>>i>>name[n]>>j>>k;write(i,name[n],j,k,e); ClassA.ListAdd(e);n++;getch();break; case'

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论