顺序表的应用-数据结构实验报告_第1页
顺序表的应用-数据结构实验报告_第2页
顺序表的应用-数据结构实验报告_第3页
顺序表的应用-数据结构实验报告_第4页
顺序表的应用-数据结构实验报告_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

大学数据结构实验报告课程名称数据结构实验第(三)次实验实验名称顺序表的应用学生姓名于歌专业班级学号实验成绩指导老师(签名)日期2018年9月30日一、实验目的1.学会定义线性表的顺序存储类型,实现C程序的基本结构,对线性表的一些基本操作和具体的函数定义。2.掌握顺序表的基本操作,实现顺序表的插入、删除、查找以及求并集等运算。3.掌握对多函数程序的输入、编辑、调试和运行过程。二、实验要求1.预习C语言中结构体的定义与基本操作方法。2.对顺序表的每个基本操作用单独的函数实现。3.编写完整程序完成下面的实验内容并上机运行。4.整理并上交实验报告。三、实验内容:1.定义一个包含学生信息(学号,姓名,成绩)的顺序表,使其具有如下功能:(1)根据指定学生个数,逐个输入学生信息(2)逐个显示学生表中所有学生的相关信息(3)根据姓名进行查找,返回此学生的学号和成绩(4)根据指定的位置可返回相应的学生信息(学号,姓名,成绩)(5)给定一个学生信息,插入到表中指定的位置(6)删除指定位置的学生记录(7)统计表中学生个数四、实验设计1.定义一个包含学生信息(学号,姓名,成绩)的顺序表,使其具有如下功能:(1)根据指定学生个数,逐个输入学生信息for(count=0;count<n;count++){scanf("%s%s%d",e.no,,&e.score);Input(&L,e);}StatusInput(SqList*L,ElemTypee){if(!(*L).elem)returnERROR;(*L).elem[(*L).length++]=e;returnOK;}(2)逐个显示学生表中所有学生的相关信息StatusPrint(SqListL){printf("学号姓名成绩\n");intcount;for(count=0;count<L.length;count++)Pri(L.elem[count]);returnOK;}voidPri(ElemTypee){printf("%8s|",e.no);printf("%20s|",);printf("%8d\n",e.score);}(3)根据姓名进行查找,返回此学生的学号和成绩StatusLocateElem(SqListL,ElemTypee){intcount;for(count=0;count<L.length;count++)if(strcmp(L.elem[count].name,)==0)break;if(count<L.length){printf("学号姓名成绩\n");Pri(L.elem[count]);}elseprintf("%s在顺序表中查不到!\n",);returnOK;}(4)根据指定的位置可返回相应的学生信息(学号,姓名,成绩)StatusLocateNum(SqListL,inti){if(i<1||i>L.length+1)returnOVERFLOW;printf("学号姓名成绩\n");Pri(L.elem[i-1]);returnOK;}(5)给定一个学生信息,插入到表中指定的位置StatusListInsert(SqList*L,inti,ElemTypee){intcount;if(i<1||i>(*L).length+1)returnOVERFLOW;if((*L).length==(*L).MaxSize)(*L).elem=(ElemType*)realloc((*L).elem,sizeof(ElemType)*((*L).MaxSize+LISTINCREMENT));if(!(*L).elem)exit(OVERFLOW);for(count=(*L).length-1;count>=i-1;count--)(*L).elem[count+1]=(*L).elem[count];(*L).elem[i-1]=e;(*L).length++;returnOK;}(6)删除指定位置的学生记录StatusListDelete(SqList*L,inti){intcount;if(i<1||i>(*L).length+1)returnOVERFLOW;for(count=i;count<(*L).length;count++)(*L).elem[count-1]=(*L).elem[count];(*L).length--;returnOK;}(7)统计表中学生个数printf("表中学生的个数为:%d\n",L.length);(8)主函数intmain(){SqListL;ElemTypee;inti,count,n,number;InitList(&L);printf("请输入学生的个数:\n");scanf("%d",&n);printf("请输入学号、姓名、成绩:\n");for(count=0;count<n;count++){scanf("%s%s%d",e.no,,&e.score);Input(&L,e);}printf("学生信息生成成功!\n");Pr();scanf("%d",&n);while(n>0&&n<7){switch(n){case1:Print(L);break;case2:printf("请输入要查找的学生的姓名:");scanf("%s",);LocateElem(L,e);break;case3:printf("请输入要查找的学生的位置:");scanf("%d",&i);LocateNum(L,i);break;case4:printf("输入插入学生的位置、学号、姓名、成绩:");scanf("%d%s%s%d",&i,e.no,,&e.score);if(ListInsert(&L,i,e))printf("插入成功!\n");break;case5:printf("请输入要删除的学生的位置:\n");scanf("%d",&i);if(ListDelete(&L,i))printf("删除成功!\n");break;case6:printf("表中学生的个数为:%d\n",L.length);}Pr();scanf("%d",&n);}if(n==7)printf("退出成功!");return0;}五、实验测试2.定义一个包含学生信息(学号,姓名,成绩)的顺序表,使其具有如下功能运行界面六、总结附录1:源代码#include<stdio.h>#include<stdlib.h>#include<string.h>#defineLIST_INIT_SIZE100#defineLISTINCREMENT10#defineOK1#defineERROR0#defineOVERFLOW2typedefintStatus;typedefstruct{charno[8];charname[20];intscore;}Student;typedefStudentElemType;typedefstruct{ElemType*elem;intlength;intMaxSize;}SqList;StatusInitList(SqList*L){(*L).elem=(ElemType*)malloc(sizeof(ElemType)*LIST_INIT_SIZE);if(!(*L).elem)exit(OVERFLOW);(*L).length=0;(*L).MaxSize=LIST_INIT_SIZE;returnOK;}StatusInput(SqList*L,ElemTypee){if(!(*L).elem)returnERROR;(*L).elem[(*L).length++]=e;returnOK;}StatusListInsert(SqList*L,inti,ElemTypee){intcount;if(i<1||i>(*L).length+1)returnOVERFLOW;if((*L).length==(*L).MaxSize)(*L).elem=(ElemType*)realloc((*L).elem,sizeof(ElemType)*((*L).MaxSize+LISTINCREMENT));if(!(*L).elem)exit(OVERFLOW);for(count=(*L).length-1;count>=i-1;count--)(*L).elem[count+1]=(*L).elem[count];(*L).elem[i-1]=e;(*L).length++;returnOK;}StatusListDelete(SqList*L,inti){intcount;if(i<1||i>(*L).length+1)returnOVERFLOW;for(count=i;count<(*L).length;count++)(*L).elem[count-1]=(*L).elem[count];(*L).length--;returnOK;}StatusLocateElem(SqListL,ElemTypee){intcount;for(count=0;count<L.length;count++)if(strcmp(L.elem[count].name,)==0)break;if(count<L.length){printf("学号姓名成绩\n");Pri(L.elem[count]);}elseprintf("%s在顺序表中查不到!\n",);returnOK;}StatusLocateNum(SqListL,inti){if(i<1||i>L.length+1)returnOVERFLOW;printf("学号姓名成绩\n");Pri(L.elem[i-1]);returnOK;}StatusPrint(SqListL){printf("学号姓名成绩\n");intcount;for(count=0;count<L.length;count++)Pri(L.elem[count]);returnOK;}voidPri(ElemTypee){printf("%8s|",e.no);printf("%20s|",);printf("%8d\n",e.score);}voidPr(){printf("\n1.输出全部的学生信息\n");printf("2.通过姓名查找学号和成绩\n");printf("3.通过位置查找学生的信息\n");printf("4.插入学生信息\n");printf("5.删除学生信息\n");printf("6.统计学生个数\n");printf("7.退出\n");printf("请输入要使用的功能:");}intmain(){SqListL;ElemTypee;inti,count,n,number;InitList(&L);printf("请输入学生的个数:\n");scanf("%d",&n);printf("请输入学号、姓名、成绩:\n");for(count=0;count<n;count++){scanf("%s%s%d",e.no,,&e.score);Input(&L,e);}printf("学生信息生成成功!\n");Pr();scanf("%d",&n);while(n>0&&n<7){switch(n){case1:Print(L);break;case2:printf("请输入要查找的学生

温馨提示

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

评论

0/150

提交评论