《数据结构实践环节考核指导》由会员分享,可在线阅读,更多相关《数据结构实践环节考核指导(10页珍藏版)》请在金锄头文库上搜索。
1、数据结构实践环节考核指导一、类型课程实验考核二、目的与要求本课程的目的和任务是使学习者掌握各种常用的数据结构和典型算法,为学习后续计算机专业课程提供必要的基础,提高学习者运用数据结构解决实际问题的能力。本考核主要达到两个目的:1检查学生对数据的逻辑结构、存储结构以及算法的理解程度。2检查学生对数据结构的选择以及算法设计和实现的应用能力。三、考核环境软件要求:DOS 操作系统或Windows环境的MS-DOS模式; Turbo C 3.0系统。四、考核内容1、线性表的插入和删除要求对有序顺序表进行插入和删除操作,设数据域为整数。要求对有序单链表进行插入和删除操作,单链表的数据域是字符串,但不允许
2、重复的串插入表中。删除操作是根据输入的字符串,先找到相应的结果后删除之。2、栈和队列操作对一些简单应用问题,如进制转换、字符串输入等,利用栈或队列来实现。3、二叉树操作要求采用二叉链表作为存储结构,完成二叉树的建立,先序、中序和后序以及按层次遍历及求所有叶子和结点个数的操作等。4、图的遍历操作可采用邻接矩阵或邻接表作为存储结构,完成有向图和无向图的DFS和BFS操作。5、数据查找实现顺序查找、折半查找及二叉排序查找算法,比较他们的查找速度。6、排序实现直接插入、冒泡、直接选择、快速、堆、归并排序、并鼓励实现基数排序。比较各种排序算法的运行速度。五、考核时间与形式考核时间为60分钟;采用闭卷形式
3、,所有答案都直接做到考核盘上。六、注意事项1、试卷和考核盘都要清楚地书写姓名、准考证号和机号信息;2、必须用蓝、黑色钢笔或圆珠笔书写,字迹要清楚、卷面要整洁。3、考试期间严禁左顾右盼、交头接耳;对机器或试卷中出现的问题由监考老师负责解决。七、题型与要求 请参考以下样题。样题一要求:将考试目录下的c源程序test1.c(文件内容见附录一)复制到本地计算机的硬盘上,然后按要求填入相应的语句,调试运行,并按下面要求输入测试数据,在答题纸上写出你所填入的语句以及运行测试的结果。题目:已知在顺序存储结构的线性表L上,以递减顺序输入几个整数:96,64,52,48,43,33,18,12,在test1.c
4、中填入相应语句,使之能顺利完成该递减序列的插入和删除操作。设表L中不应有相同的数据元素。测试数据为:依次插入5、18、57,再依次删除48、20、12。(注:线性表从第0个位置开始存放数据。)答案:(1)(2)(3)(4)测试结果为:样题二要求:将考试目录下的c源程序test2.c(文件内容见附录二)复制到本地计算机的硬盘上,然后按要求填入相应的语句,调试运行,并按下面要求输入测试数据,在答题纸上写出你所填入的语句以及运行测试的结果。题目:由键盘任意键入n个正整数关键字,采用堆排序法进行排序,输出第一趟、第五趟及最后一趟的结果。测试数据为:取n=10,建立时输入25,12,53,6,45,36
5、,7,78,62,17。答案:(1)(2)测试结果为:样题三要求:将考试目录下的c源程序test3.c(文件内容见附录三)复制到本地计算机的硬盘上,然后按要求填入相应的语句,调试运行,并按下面要求输入测试数据,在答题纸上写出你所填入的语句以及运行测试的结果。题目:由键盘任意键入n个正整数,建立其二叉排序树的存储,中序遍历输出结点序列,删除若干数据后再按中序输入。测试数据为:建立时输入25,12,53,45,36,7,78,62,输入0时为结束;依次插入数据45、60。答案:(1)(2)(3)测试结果为:附录一:相关文件内容1文件test1.c的内容:/*test1.c*/#define Lis
6、tSize 10typedef int DataType;typedef structDataType dataListSize;int length;seqlist;#define n 8#define Error printfvoid deletelist(seqlist *L);void insertlist(seqlist *L);main()seqlist *L;int i;char c;printf(请按递减序输入%d个整数(以空格为间隔):n,n);for(i=0;idatai);L-length=n;printf(请选择:n);printf(A-插入-n);printf(B-删
7、除-n);printf(C-退出-n);scanf(n%c,&c);while(c!=c& c!=C)if (c=A|c=a) insertlist(L);else deletelist(L);printf(当前顺序表中的数据为:n);for (i=0;ilength;i+)printf(%3d,L-datai);printf(n请再选择:n);printf(A-插入-n);printf(B-删除-n);printf(C-退出-n);scanf(n%c,&c);void insertlist(seqlist *L)int x,i,j;printf(n请输入要插入的整数:);scanf(n%d,
8、&x);printf(n在下面序列中插入%dn,x);for(i=0;ilength;i+)printf(%3d,L-datai);i=0;/*/while (请考生填写(1)) i+;/*/if (x=L-datai)Error(n重复插入,错误!n);else if (L-length=ListSize) Error(n表溢出,无法插入!);else printf(n将数据%d插入到第%d的位置上n,x,i);/*/请考生填写(2)/*/void deletelist(seqlist *L)int x,i,j,num;printf(n请输入要删除的整数:);scanf(n%d,&x);pr
9、intf(n在下面序列中删除%dn,x);for(i=0;ilength;i+)printf(%3d,L-datai);i=0;/*/while (请考生填写(3)) i+;/*/if (x!=L-datai) Error(n没有找到要删除的整数!n);elseprintf(n删除原表中第%d个位置以后的一个数据%dn,i,x);/*/请考生填写(4)/*/2文件test2.c的内容:/*test2.c*/#include #include #define n 10#define Error printftypedef int KeyType;typedef char InfoType;typ
10、edef structKeyType key;InfoType otherinfo;RecType;typedef RecType Seqlistn+1;int m,num; /*全局变量m和num存储输出的第趟结果及递归调用的次数*/Seqlist R;/*记录待排序的10个数*/void Heapsort();main()Seqlist S;int i;char ch1,ch2;printf(请输入10个待排序数据:(每个数据间用空格隔开)n);for(i=1;i=n;i+)scanf(%d,&Si.key);ch1=y;while (ch1=y | ch1=Y)printf(请选择下列操
11、作:n);printf(1-更新待排序数据-n);printf(2-堆排序-n);printf(3-退出-n);scanf(n%c,&ch2);switch (ch2)case 1:printf(请输入更新待排序数据:n);for (i=1;i=n;i+)scanf (%d,&Si.key);break;case 2:printf(请输入要输出第几趟结果:);scanf(n%d,&m);for (i=1;in+1;i+)Ri.key=Si.key;Heapsort();break;case 3:ch1=n;break;default:ch1=n;void Heapify(int low,int high)int large;RecType temp=Rlow;for (large=2*low;large=high;large*=2)if (largehigh & Rlarge.key=Rlarge.key)break;Rlow=Rlarge;low=large;Rlow=temp;/*Heapify*/void BuildHeap()/*将初始文件R1.n构造为大根堆*/int i;/*