数据结构实践环节考核指导

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1《数据结构》实践环节考核指导一、类型课程实验考核二、目的与要求本课程的目的和任务是使学习者掌握各种常用的数据结构和典型算法,为学习后续计算机专业课程提供必要的基础,提高学习者运用数据结构解决实际问题的能力。本考核主要达到两个目的:1.检查学生对数据的逻辑结构、存储结构以及算法的理解程度。2.检查学生对数据结构的选择以及算法设计和实现的应用能力。三、考核环境软件要求:DOS操作系统或Windows环境的MS-DOS模式;TurboC3.0系统。四、考核内容1、线性表的插入和删除要求对有序顺序表进行插入和删除操作,设数据域为整数。要求对有序单链表进行插入和删除操作,单链表的数据域是字符串,但不允许重复的串插入表中。删除操作是根据输入的字符串,先找到相应的结果后删除之。2、栈和队列操作对一些简单应用问题,如进制转换、字符串输入等,利用栈或队列来实现。3、二叉树操作要求采用二叉链表作为存储结构,完成二叉树的建立,先序、中序和后序以及按层次遍历及求所有叶子和结点个数的操作等。4、图的遍历操作可采用邻接矩阵或邻接表作为存储结构,完成有向图和无向图的DFS和BFS操作。5、数据查找实现顺序查找、折半查找及二叉排序查找算法,比较他们的查找速度。6、排序实现直接插入、冒泡、直接选择、快速、堆、归并排序、并鼓励实现基数排序。比较各种排序算法的运行速度。五、考核时间与形式考核时间为60分钟;采用闭卷形式,所有答案都直接做到考核盘上。六、注意事项1、试卷和考核盘都要清楚地书写姓名、准考证号和机号信息;2、必须用蓝、黑色钢笔或圆珠笔书写,字迹要清楚、卷面要整洁。3、考试期间严禁左顾右盼、交头接耳;对机器或试卷中出现的问题由监考老师负责解决。2七、题型与要求请参考以下样题。样题一要求:将考试目录下的c源程序test1.c(文件内容见附录一)复制到本地计算机的硬盘上,然后按要求填入相应的语句,调试运行,并按下面要求输入测试数据,在答题纸上写出你所填入的语句以及运行测试的结果。题目:已知在顺序存储结构的线性表L上,以递减顺序输入几个整数:96,64,52,48,43,33,18,12,在test1.c中填入相应语句,使之能顺利完成该递减序列的插入和删除操作。设表L中不应有相同的数据元素。测试数据为:依次插入5、18、57,再依次删除48、20、12。(注:线性表从第0个位置开始存放数据。)答案:(1)(2)(3)(4)测试结果为:样题二要求:将考试目录下的c源程序test2.c(文件内容见附录二)复制到本地计算机的硬盘上,然后按要求填入相应的语句,调试运行,并按下面要求输入测试数据,在答题纸上写出你所填入的语句以及运行测试的结果。题目:由键盘任意键入n个正整数关键字,采用堆排序法进行排序,输出第一趟、第五趟及最后一趟的结果。测试数据为:取n=10,建立时输入25,12,53,6,45,36,7,78,62,17。答案:(1)(2)测试结果为:3样题三要求:将考试目录下的c源程序test3.c(文件内容见附录三)复制到本地计算机的硬盘上,然后按要求填入相应的语句,调试运行,并按下面要求输入测试数据,在答题纸上写出你所填入的语句以及运行测试的结果。题目:由键盘任意键入n个正整数,建立其二叉排序树的存储,中序遍历输出结点序列,删除若干数据后再按中序输入。测试数据为:建立时输入25,12,53,45,36,7,78,62,输入0时为结束;依次插入数据45、60。答案:(1)(2)(3)测试结果为:附录一:相关文件内容1.文件test1.c的内容:/*test1.c*/#defineListSize10typedefintDataType;typedefstruct{DataTypedata[ListSize];intlength;}seqlist;#definen8#defineErrorprintfvoiddeletelist(seqlist*L);voidinsertlist(seqlist*L);main(){seqlist*L;inti;charc;printf(请按递减序输入%d个整数(以空格为间隔):\n,n);for(i=0;in;i++)scanf(%d,&L-data[i]);L-length=n;4printf(请选择:\n);printf(A-------------------插入---------------\n);printf(B-------------------删除---------------\n);printf(C-------------------退出---------------\n);scanf(\n%c,&c);while(c!='c'&&c!='C'){if(c=='A'||c=='a')insertlist(L);elsedeletelist(L);printf(当前顺序表中的数据为:\n);for(i=0;iL-length;i++)printf(%3d,L-data[i]);printf(\n请再选择:\n);printf(A-------------------插入-------------\n);printf(B-------------------删除-------------\n);printf(C-------------------退出-------------\n);scanf(\n%c,&c);}}voidinsertlist(seqlist*L){intx,i,j;printf(\n请输入要插入的整数:);scanf(\n%d,&x);printf(\n在下面序列中插入%d\n,x);for(i=0;iL-length;i++)printf(%3d,L-data[i]);i=0;/*********************************************************/while(请考生填写(1))i++;/*********************************************************/if(x==L-data[i])Error(\n重复插入,错误!\n);elseif(L-length=ListSize)Error(\n表溢出,无法插入!);else{printf(\n将数据%d插入到第%d的位置上\n,x,i);/****************************************************/请考生填写(2)/****************************************************/}}voiddeletelist(seqlist*L){intx,i,j,num;printf(\n请输入要删除的整数:);scanf(\n%d,&x);printf(\n在下面序列中删除%d\n,x);for(i=0;iL-length;i++)printf(%3d,L-data[i]);5i=0;/*******************************************/while(请考生填写(3))i++;/*******************************************/if(x!=L-data[i])Error(\n没有找到要删除的整数!\n);else{printf(\n删除原表中第%d个位置以后的一个数据%d\n,i,x);/*******************************************************/请考生填写(4)/*******************************************************/}}2.文件test2.c的内容:/*test2.c*/#includestdio.h#includestdlib.h#definen10#defineErrorprintftypedefintKeyType;typedefcharInfoType;typedefstruct{KeyTypekey;InfoTypeotherinfo;}RecType;typedefRecTypeSeqlist[n+1];intm,num;/*全局变量m和num存储输出的第趟结果及递归调用的次数*/SeqlistR;/*记录待排序的10个数*/voidHeapsort();main(){SeqlistS;inti;charch1,ch2;printf(请输入10个待排序数据:(每个数据间用空格隔开)\n);for(i=1;i=n;i++)scanf(%d,&S[i].key);ch1='y';while(ch1=='y'||ch1=='Y'){printf(请选择下列操作:\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++)6scanf(%d,&S[i].key);break;case'2':printf(请输入要输出第几趟结果:);scanf(\n%d,&m);for(i=1;in+1;i++)R[i].key=S[i].key;Heapsort();break;case'3':ch1='n';break;default:ch1='n';}}}voidHeapify(intlow,inthigh){intlarge;RecTypetemp=R[low];for(large=2*low;large=high;large*=2){if(largehigh&&R[large].keyR[large+1].key)large++;if(temp.key=R[large].key)break;R[low]=R[large];low=large;}R[low]=temp;}/*Heapify*/voidBuildHeap(){/*将初始文件R[1...n]构造为大根堆*/inti;/****************************************/请考生填写(1)Heapify(i,n);/****************************************/}voidHeapsort(){/*对R[1...n]进行堆排序,用R[0]做暂存单元*/inti,k;BuildHeap();for(i=n;i1;i--){R[0]=R[1];R[1]=R[i];R[i]=R[0];if(i==(n-m+1)){printf(第%d趟的结果是:,m);for(k=1;k=n;k++)printf(%5d,R[k].key);printf(\n);printf(请输入还要输出第几趟结果,不想输出时请输入0:);scanf(\n%d,&m);7}/**********************************************/请考生填写(2)/**********************************************/}printf(最终排序结果是:);for(k=1;k=n;k++)printf(%5d,R[k].key);printf(\n);}/*Heapsort*/3.文件test3.c的内容:/*test3.c*/#includestdio.h#includestdlib.htypedefintKeyType;typedefstructnode{KeyTypekey

1 / 10
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功