[理科实验报告精品]线性表基本操作 实验报告.doc
院 系: 计算机科学学院 专 业: 计算机科学与技术 年 级: 课程名称: 数据结构 学 号: 姓 名: 指导教师: 2011年 03 月 26 日年级 班号 学号 专业计算机科学与技术 姓名实验名称 线性表基本操作实验类型设计型综合型创新型YES实验目的或要求 目的:实现线性表基本操作要求:1、实现线性表的插入,删除,求表长,查找e元素的前驱、后继,查找第i个位置的元素等基本操作。2、程序以菜单方式工作,其中一个选项控制退出程序,其他选项可循环进行选择。实验记录实验源代码:#include <stdio.h>#include <stdlib.h>#include <string.h>typedef structint num;char name20;int age;student;typedef structstudent *elem;int len;int maxsize;sqlist; void InitList_Sq(sqlist &L)L.elem=(student*)malloc(100*sizeof(student);L.len=0;L.maxsize=100; (写不完时,可另加附页。)实验记录 int ListInsert_Sq(sqlist &L)char con='y'int i=0;while(con='y')|(con='Y')if(L.len<100)printf("Number:");scanf("%d",&L.elemi.num);printf("Name:");scanf("%s",L.elemi.name);printf("Age:");scanf("%d",&L.elemi.age);i+;L.len+; printf("Do you want to contiune?(Y/N)");getchar();scanf("%s",&con); while(con!='y')&&(con!='Y')&&(con!='N')&&(con!='n')printf("you can not choice but'y'and'n',please choice again!");getchar();scanf("%s",&con);elsecon='n'return 1; (写不完时,可另加附页。)实验记录 int output_sq(sqlist &L)int j;for(j=0;j<=(L.len-1);j+)printf("Number:%dn",L.elemj.num);printf("Name:%sn",L.elemj.name);printf("age:%dnn",L.elemj.age);return 1;int getelem(sqlist L) int i; printf("Which one do you want to getelem?"); scanf("%d",&i); i=i-1; printf("Number:%dn",L.elemi.num); printf("Name:%sn",L.elemi.name); printf("age:%dnn",L.elemi.age); return 1; (写不完时,可另加附页。)实验记录 void insert(sqlist &L) int i,j;printf("before which place do you want to insert?");scanf("%d",&i);for(j=(L.len-1);j>i-2;j-) L.elemj+1=L.elemj; printf("Number:");scanf("%d",&L.elemi-1.num);printf("Name:");scanf("%s",L.elemi-1.name);printf("Age:");scanf("%d",&L.elemi-1.age);L.len+; void listdelete(sqlist &L)int i,j;printf("which place do you want to delete?");scanf("%d",&i);for(j=i;j<L.len-1;j+);L.elemj=L.elemj+1;L.len-; (写不完时,可另加附页。)实验记录 void mergelist(sqlist &L,sqlist &R,sqlist &C)int i,j,k;i=j=0;k=0;while(i<=L.len-1)&&(j<=R.len-1)if(L.elemi.num<=R.elemj.num) C.elemk.num=L.elemi.num; strcpy(C.elemk.name,L.elemi.name); C.elemk.age=L.elemi.age; +k;+i;C.len+;elseC.elemk.num=R.elemj.num; strcpy(C.elemk.name,R.elemj.name); C.elemk.age=R.elemj.age; +k;+j;C.len+;while(i<=L.len-1) C.elemk.num=L.elemi.num; strcpy(C.elemk.name,L.elemi.name); C.elemk.age=L.elemi.age; +k;+i;C.len+;while(j<=R.len-1) C.elemk.num=R.elemj.num; strcpy(C.elemk.name,R.elemj.name); C.elemk.age=R.elemj.age; +k;+j;C.len+; (写不完时,可另加附页。)实验记录 int main() int choice ; sqlist L,R,C; InitList_Sq(L); InitList_Sq(R); InitList_Sq(C); while(choice!=8) printf("*CONTENT*n");printf("* If you want to write a new list of student s information * choice 1 *n");printf("* If you want to visit zhe student information list * choice 2 *n");printf("* If you want to add more to the student information list * choice 3 *n");printf("* If you want to delete some of the student information list * choice 4 *n");printf("* If you want to visit one of the student in zhe list * choice 5 *n");printf("* If you want to add the two list to a new one * choice 6 *n");printf("* If you want to visit zhe list which include 2 list * choice 7 *n");printf("* If you want to quit this program * choice 8 *n");printf("*n");printf(" n");printf("which do you want to choice? just type zhe number for choice"); scanf("%d",&choice); (写不完时,可另加附页。)实验记录 switch(choice)case 1: int m; printf("which list do you want to insert?"); scanf("%d",&m); if(m=1) ListInsert_Sq(L); else ListInsert_Sq(R); break;case 2: int d; printf("which list do you want to out put?"); scanf("%d",&d); if(d=1) output_sq(L); else output_sq(R);break;case 3: int a; printf("which list do you want to add one student?"); scanf("%d",&a); if(a=1) insert(L); else insert(R);break;case 4: int b; printf("which list do you want to delete one student?"); scanf("%d",&b); if(b=1) listdelete(L); else listdelete(R); break; (写不完时,可另加附页。)实验记录 case 5: int c; printf("which list do you want to getelem?"); scanf("%d",&c); if(c=1) getelem(L); else getelem(R);break; case 6: mergelist(L,R,C);printf("ok!n"); break; case 7:output_sq(C);printf("ok!n");break;case 8:break;default:printf("n");printf("n");printf ("please make zhe right choice!n");printf("n");printf("n");break;return 1; (写不完时,可另加附页。)实验记录 运行结果如下:显示菜单界面,用户根据自己的需求选择需要处理的选项。 (写不完时,可另加附页。)实验记录 用户选择需要插入的线性表:输入元素信息:是否继续插入: 待添加的隐藏文字内容2 (写不完时,可另加附页。)实验记录继续插入信息: (写不完时,可另加附页。)实验记录 用户往线性表1中添加元素:访问线性表1中元素并输出: (写不完时,可另加附页。)实验记录 访问线性表1中某元素:再创建一个线性表2: (写不完时,可另加附页。)实验记录将线性表1,2合并为一个新的线性表:删除线性表2中某一元素: (写不完时,可另加附页。)实验记录 访问合并的新线性表: (写不完时,可另加附页。)实验记录 退出: (写不完时,可另加附页。)组内分工(可选)实验结果分析及心得体会1. 用户根据自己的需求创建线性表,向其中添加元素(元素信息:学号,姓名,年龄);2. 用户可以访问线性表并输出其内容;3. 用户可向线性表中添加元素;4. 用户可以删除线性表中的元素;5. 用户可以访问查找线性表中的某个元素;6. 用户可以将创建的两个线性表合并成一个线性表并将其内容输出;用户自定义函数:插入函数 输出函数 取元素函数 删除函数 线性表合并函数 心得体会:通过这次试验,我掌握了线性表的创建,元素的插入,删除,访问,线性表的合并等操作,体会到指针的优越性,运用switch-case语句实现菜单的功能。 成绩评定教师签名: 年 月 日备注:源代码附后,源代码要求有注释说明