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

合集下载

09级《数据结构》实验指导书

09级《数据结构》实验指导书

《数据结构实验指导书》潘向辉/吴学毅编写印包学院数字媒体技术专业2011年3月实验说明【实验环境】操作系统:Microsoft Windows XP/2000。

编程语言:C语言【实验要求】1.实验前,了解实验目的、实验内容及相关的基本理论知识,并按照实验内容要求设计程序流程,书写预习报告;2.本课程实验均为单人单组,独立完成;3.实验所用计算机固定,以便实现实验之间的延续性;4.按要求完成实验内容,在实验结束后按照格式和规范撰写实验报告。

【实验项目及学时分配】【实验报告及考核】1.实验报告撰写符合格式及规范要求,详见实验报告撰写格式及规范;2.本课程实验占课程总成绩的15%。

实验(一)线性表一、实验项目名称:线性表课时:4学时二、实验要求1、掌握顺序表的定义与实现,包括查找、插入、删除算法的实现;2、掌握在各种链表结构中实现线性表操作的基本方法,能在实际应用中选用适当的链表结构;三、实验环境Widows操作系统、C语言四、实验内容(1)顺序表建立一如下表所示的学生信息表使用结构体,用顺序表完成以下内容:1.初始化线性表为空;2.依次输入数据元素;(由键盘输入)3.完成数据元素的插入、删除操作;4.取第i个数据元素;5.依次显示当前线性表中的数据元素。

(2)单链表建立一个单链表,依次输入数据元素0~9。

使用结构体,用单链表完成以下内容:1.初始化单链表;2.在单链表指定位置插入一个数据元素;3.删除指定位置的一个数据元素;4.取第i个数据元素;5.查找数据元素x 是否在单链表中;6.销毁单链表;五、思考题:在什么情况下使用顺序表比链表好?实验(二)栈和队列一、实验项目名称:栈和队列课时:2学时二、实验要求1、掌握栈的顺序表示、链表表示以及相应操作的实现。

特别注意栈空和栈满的条件;2、掌握队列的顺序表示、链表表示以及相应操作的实现。

特别是循环队列中队头与队尾指针的变化情况;三、实验环境Widows操作系统、VC6.0四、实验内容分别使用顺序循环队列和堆栈以及链式队列和堆栈编写程序:判断一个字符序列是否是回文。

数据结构C版实验指导

数据结构C版实验指导

《数据结构与算法》实验指导书一、实验课程教学目的和要求《数据结构与算法》是一门实践性很强的课程,光靠读书和做习题是不能提高实践能力的。

《数据结构与算法》的实验与程序设计语言课程中的实验不同,后者更多的强调语言方面的功能实现,而前者更接近实际,需要同学们自己分析问题,设计模型和算法,再上机调试完成。

《数据结构与算法》的实验的目的主要有两个:1)深化理解书本上的理论知识,将书本的知识变“活”(为已掌握,为已活用);2)理论和实践相结合,学会将相关的数据结构和算法应用于解决实际问题,培养数据结构的应用能力和软件工程所需要的实践能力。

《数据结构与算法》的实验类型1)验证性实验—主要是验证教材中已有的数据结构和算法。

2)设计性实验—针对具体问题,应用某一个知识点,自己设计数据结构和算法,培养对数据结构的简单运用能力。

3)综合性实验—针对具体问题,应用某几个知识点,自己设计数据结构和算法,培养对数据结构的综合运用能力。

《数据结构与算法》的实验安排《数据结构与算法》实验的一般步骤1)需求分析:要对简单的问题描述进行详细的分析,充分理解问题,明确问题要求做什么,有什么数据,边界条件……。

2)概要设计:针对问题描述中涉及到数据定义抽象数据类型,设计数据结构和算法模型。

本部分不必考虑实现的细节。

3)详细设计:设计具体的存储结构(用C++或C语言)。

此外,还要设计对象或函数间的调用关系及输入输出。

4)上机调试(运行代码,修正语法及逻辑错误)5)结果与总结《数据结构与算法》的实验要求:1)完成实验预习;2)完成并上交实验报告;3)完成电子设计文档预习/实验报告的格式要求:1)实验名称2)实验目的3)实验内容及要求4)概要设计:ADT5)详细设计:C++类或C函数6)调试分析:7)结果与总结实验一: 顺序表的操作一、实验目的:1)掌握线性表的顺序存储结构与算法实现;3)掌握顺序表的逻辑插入方法。

二、实验内容及要求:实现对有序的顺序表L进行保序插入的(C++或C)算法提示:主函数构建n个整数的顺序表L并调用输出函数;调用保序插入函数实现插入操作并调用输出函数输出。

数据结构课程实验指导书

数据结构课程实验指导书

《数据结构》实验指导书第一部分前言一、实验的目的《数据结构》是计算机学科一门重要的专业基础课程,也是计算机学科的一门核心课程。

本课程的另一重要教学目的是训练学生进行复杂程序设计的技能和培养良好程序设计的习惯,要做到这一点,上机实习是必须的。

数据结构实验是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。

通常,实验课题中的问题比平时的习题复杂得多,也更接近实际。

实验着眼于原理与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,训练学生实际动手进行程序设计和调试程序的能力,加深对数据结构相关概念和算法的理解。

通过完成本实验课程的实验,学生应学会并掌握本课程的基本和重点知识,深刻理解逻辑结构、物理结构和算法设计之间的关系,初步学会算法分析的方法,并能在一定范围内运用所掌握的分析方法进行算法分析,培养软件工作所需要的动手能力和作为一个软件工作者所应具备的科学工作方法和作风。

二、实验前的准备工作1.每个学生需配备一台计算机,操作系统需Windows2000/XP以上版本,软件需Visual C++6.0以上版本。

2.实验前要求学生按实验要求编写好相关实验程序,准备上机调试运行。

三、实验的步骤(一)建立一个文件夹,如“数据结构”,用来存放自己的所有实验程序,在该文件夹中建立子目录用来存放每个项目(一个子目录一个项目),如“顺序表”,项目中需要的所有文件都存在该文件夹中。

(二)新建一个项目文件1.双击Visual C++ 6.0快捷图标,进入Visual C++ 6.0集成开发环境;或者点击“开始”→“程序”→“Microsoft Visual Studio 6.0”→“Microsoft Visual C++ 6.0”进入Visual C++ 6.0集成开发环境。

2.单击“File”菜单,选择“New”命令3.创建一个项目文件并保存在项目所在文件夹中;3. 创建源程序文件并保存在项目所在文件夹中;4.输入源程序;5.单击“保存”按钮保存源程序。

数据结构实验指导书及答案(徐州工程学院)

数据结构实验指导书及答案(徐州工程学院)

《数据结构实验》实验指导书及答案信电工程学院计算机科学和技术教研室编2011.12数据结构实验所有代码整理作者郑涛声明:在这里我整理了数据结构实验的所有代码,希望能对大家的数据结构实验的考试有所帮助,大家可以有选择地浏览,特别针对一些重点知识需要加强记忆(ps:重点知识最好让孙天凯给出),希望大家能够在数据结构实验的考试中取得令人满意的成绩,如果有做的不好的地方请大家谅解并欢迎予以指正。

实验一熟悉编程环境实验预备知识:1.熟悉本课程的语言编译环境(TC或VC),能够用C语言编写完整的程序,并能够发现和改正错误。

2.能够灵活的编写C程序,并能够熟练输入C程序。

一、实验目的1.熟悉C语言编译环境,掌握C程序的编写、编译、运行和调试过程。

2.能够熟练的将C程序存储到指定位置。

二、实验环境⒈硬件:每个学生需配备计算机一台。

⒉软件:Windows操作系统+Turbo C;三、实验要求1.将实验中每个功能用一个函数实现。

2.每个输入前要有输入提示(如:请输入2个整数当中用空格分割:),每个输出数据都要求有内容说明(如:280和100的和是:380。

)。

3.函数名称和变量名称等用英文或英文简写(每个单词第一个字母大写)形式说明。

四、实验内容1.在自己的U盘中建立“姓名+学号”文件夹,并在该文件夹中创建“实验1”文件夹(以后每次实验分别创建对应的文件夹),本次实验的所有程序和数据都要求存储到本文件夹中(以后实验都按照本次要求)。

2.编写一个输入某个学生10门课程成绩的函数(10门课程成绩放到结构体数组中,结构体包括:课程编号,课程名称,课程成绩)。

3.编写一个求10门成绩中最高成绩的函数,输出最高成绩和对应的课程名称,如果有多个最高成绩,则每个最高成绩均输出。

4.编写一个求10门成绩平均成绩的函数。

5.编写函数求出比平均成绩高的所有课程及成绩。

#include<stdio.h>#include<conio.h>struct subject{int subject_id;char subject_name[20];double subject_grades;};struct subject sub[10];void input(){int i;printf("please input:\n");for(i=0;i<10;i++){scanf("%d %s %lf",&sub[i].subject_id,&sub[i].subject_name,&sub[i].subject_g rades);}printf("you just input:\n");for(i=0;i<3;i++){printf("%d %s %lf\n",sub[i].subject_id,sub[i].subject_name,sub[i].subject_g rades);}}void subject_max(){int i,flag;double max=sub[0].subject_grades;for(i=0;i<10;i++){if(sub[i].subject_grades>max)max=sub[i].subject_grades;flag=i;}printf("The high score of subjectis %s %lf\n",sub[flag].subject_name,max);}void subject_average(){int i;double average,sum=sub[0].subject_grades;for(i=1;i<10;i++){sum+=sub[i].subject_grades;}average=sum/10;printf("subject's average is %lf\n",average);}void subjct_gtaverage(){int i,flag;double average,sum=sub[0].subject_grades;for(i=1;i<10;i++){sum+=sub[i].subject_grades;}average=sum/10;for(i=0;i<10;i++){if(sub[i].subject_grades>average){flag=i;printf("subject greater than average is %s %lf\n",sub[flag].subject_name,sub[flag].subject_grades);}}}int main(){input();subject_max();subject_average();subjct_gtaverage();return 0;}实验二顺序表的基本操作实验预备知识:1.熟练运用数组进行程序设计,掌握数组名和指针作为函数参数。

《数据结构》实验指导书

《数据结构》实验指导书

《数据结构》实验指导书软件学院2011年9月概述实习目的和要求《数据结构》在计算机科学中是一门实践性较强的专业基础课, 上机实习是对学生的一种全面综合训练, 是与课堂听讲、自习和练习相辅相成的必不可少的一个教学环节。

实习着眼于原理与应用的结合, 使学生学会把学到的知识用于解决实际问题, 起到深化理解和灵活掌握教学内容的目的。

同时, 通过本课程的上机实习, 使学生在程序设计方法及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。

实习包括的步骤1. 简要描述题目要求, 对问题的描述应避开算法及所涉及的数据类型, 只是对所需完成的任务做出明确的陈述, 例如输入数据的类型、值的范围以及输入的形式, 输出数据的类型、值的范围以及输出的形式。

2. 选定数据结构, 写出算法, 根据自顶向下发展算法的方法, 首先描述算法的基本思想, 然后进行算法细化, 再对所设计的算法的时间复杂性和空间复杂性进行简单分析。

3. 准备好上机所需的程序, 选定一种程序设计语言(如C 语言), 手工编好上机程序, 并进行反复检查, 使程序中的逻辑错误和语法错误减少到最低程度。

对程序中有疑问的地方, 应做出标记, 以便在上机时给予注意。

4.上机输入和调试程序, 在调试程序过程中除了系统的问题以外, 一般应自己独立解决。

在程序调试通过后, 打印输出程序清单和运行结果。

5.上机结束后, 总结和整理实习报告。

实习报告的内容1.简述题目要解决的问题是什么, 并说明输入和输出数据的形式。

2.简述存储结构和算法的基本思想。

3.列出调试通过的源程序。

4.列出上面程序对应的运行结果。

分析程序的优缺点、时空性能以及改进思想, 写出心得体会。

实验一线性表一. 目的与要求本次实习的主要目的是为了使学生熟练掌握线性表的基本操作在顺序存储结构和链式存储结构上的实现, 提高分析和解决问题的能力。

要求仔细阅读并理解下列例题, 上机通过, 并观察其结果, 然后独立完成后面的实习题。

数据结构实验指导书(本科正式)

数据结构实验指导书(本科正式)

《数据结构》实验指导书实验一线性表【实验目的】1、掌握用Turbo c上机调试线性表的基本方法;2、掌握线性表的基本操作,插入、删除、查找以及线性表合并等运算在顺序存储结构和链式存储结构上的运算;3、运用线性表解决线性结构问题。

【实验学时】4 学时【实验类型】设计型【实验内容】1、顺序表的插入、删除操作的实现;2、单链表的插入、删除操作的实现;3、两个线性表合并算法的实现。

(选做)【实验原理】1、当我们在线性表的顺序存储结构上的第i个位置上插入一个元素时,必须先将线性表中第i个元素之后的所有元素依次后移一个位置,以便腾出一个位置,再把新元素插入到该位置。

若是欲删除第i个元素时,也必须把第i个元素之后的所有元素前移一个位置;2、当我们在线性表的链式存储结构上的第i个位置上插入一个元素时,只需先确定第i个元素前一个元素位置,然后修改相应指针将新元素插入即可。

若是欲删除第i个元素时,也必须先确定第i个元素前一个元素位置,然后修改相应指针将该元素删除即可;3、详细原理请参考教材。

【实验步骤】一、用C语言编程实现建立一个顺序表,并在此表中插入一个元素和删除一个元素1、通过键盘读取元素建立线性表;2、指定一个元素,在此元素之前插入一个新元素;3、指定一个元素,删除此元素。

二、用C语言编程实现建立一个单链表,并在此表中插入一个元素和删除一个元素1、通过键盘读取元素建立单链表;2、指定一个元素,在此元素之前插入一个新元素;3、指定一个元素,删除此元素。

三、用C语言编程实现两个按递增顺序排列线性表的合并1、编程实现合并按递增顺序排列的两个顺序表算法;2、编程实现合并按递增顺序排列的两个单链表算法。

【思考问题】结合实验过程,回答下列问题:1、何时采用顺序表处理线性结构的问题为最佳选择;2、何时采用链表处理线性结构的问题为最佳选择。

【实验报告要求】1、根据对线性表的理解,如何创建顺序表和单链表;2、实现顺序表插入和删除操作的程序设计思路;3、实现链表插入和删除操作的程序设计思路;4、实现两表合并操作的程序设计思路;5、调试程序过程中遇到的问题及解决方案;6、本次实验的结论与体会。

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

数据结构实践环节考核指导数据结构是计算机科学中的一个重要分支,它是大多数计算机程序的基石。

数据结构提供了一种组织和存储数据的方法,使得程序员可以更有效地访问和修改数据。

学习数据结构的过程中,实践环节是非常重要的。

本文将介绍数据结构实践环节考核指导,以帮助学生掌握数据结构的重要概念和操作。

一、实践环节的目的数据结构实践环节的主要目的是帮助学生理解和掌握数据结构的基本概念和基本操作。

实践环节将理论知识转化为实际解决问题的经验,可以帮助学生更好地理解数据结构的应用。

此外,实践环节还可以激发学生的创造力和独立思考能力,培养他们的计算机编程技能。

二、实践环节的内容数据结构实践环节的内容主要包括以下几个方面:1. 基本数据结构的实现:包括栈,队列,链表,数组,树等。

2. 基本操作的实现:包括插入,删除,查找等。

3. 经典算法的实现:包括排序算法,查找算法,图算法等。

4. 应用实践:包括字符串匹配,哈希表,数据库索引等。

5. 项目实践:例如实现一个简单的文件系统,编写一个小型游戏等。

实践环节的内容需要从浅入深,由易到难,逐步学习和掌握。

三、实践环节的要求数据结构实践环节的要求如下:1. 作业需按时完成,达到要求,没有迟交现象。

2. 作业需要提供完整的程序代码,程序中需要有详细的注释,打成单个程序包。

3. 作业需要提供详细的实验报告,阐述程序的设计思路,程序中的主要模块的功能以及代码使用。

4. 充分发挥自己的创意和想象力,尝试修改、优化、改进程序,提高程序代码质量和程序效率。

5. 在实践环节中注重实践应用,通过实际问题的解决以及项目实践的方式,掌握数据结构的核心思想。

四、实践环节的评价数据结构实践环节的评价需要综合考虑以下几个方面:1. 作业完成情况:是否按时、按要求提交完整的程序和实验报告。

2. 代码质量:是否规范、清晰,是否使用了适当的命名方式、注释与函数等等。

3. 效率性能:是否考虑到运行效率的问题,算法是否足够优秀等等。

数据结构课程设计

《数据结构》课程设计实践指导书一、实践的目的和任务《数据结构》课程设计是计算机科学技术专业集中实践性环节之一,是学习完《数据结构》课程后进行的一次全面的综合练习。

开设本课程设计实践的主要目的就是要达到理论与实际应用相结合,提高学生的动手能力,完成计算机应用能力的培养;主要任务是通过对给定问题的求解,使学生在运用《数据结构》、程序设计以及其它所学课程中的各种基本技术和理论,在建立问题模型、构造求解算法、设计数据结构、编程及上机调试等方面得到全面的锻炼,从而能更深刻地理解《数据结构》的精髓,为后续软件课程的学习及软件设计能力的提高奠定良好的基础。

二、实践的内容和要求(一)实践内容实践内容为数据结构课程完成后,运用《数据结构》、程序设计以及其它所学课程中的知识和技术来解决实际的问题。

在解决实际应用性问题时,按照计算机解决问题的步骤进行以下几个方面的工作:采用简明、严格的问题描述,建立模型,设计求解方法,用计算机实现求解方法,最后进行测试和文档制作。

1、建立模型许多问题的最初描述既不精确又不简练,还有一些问题不可能简单而精确地用计算机可求解的形式来描述,即使有些可用计算机求解的问题,也需要在很大范围内确定问题的参数,而那些合理的参数值只有通过实验才能确定。

因此,要用计算机解决问题,必须首先要以简明、严格的方式将问题描述清楚。

数学或其它科学中的几乎所有分支都可作为某一类具体问题的抽象模型。

例如,在涉及到若干对象及其相互间关系的问题时所用的数学模型为图论;数值计算问题中常用的数学模型为线性方程组(用于求解电路的电流强度或结构中的应力)或微分方程(用于预报人口增长情况或化学反应速度等);在符号与文本处理问题时常用字符串及形式语法作为模型(如编译系统)。

《数据结构》课程中所介绍的各种结构均可作为一种模型。

2、构造算法对问题建立了适当的数学模型后,就可以依据这一模型求解。

最初的目标是给出一个算法形式的解法,这是设计的核心部分。

《数据结构》实训指导书

《数据结构》实训指导书实训一线性表基本操作算法设计一、实训目的与要求1、掌握线性表的顺序存储结构的实现及其基本操作的算法设计;2、掌握线性表的链式存储结构的实现及其基本操作的算法设计;3、掌握算法转化为C程序的方法。

二、实训内容1、根据线性表L=(a,b,c,d,e,f),编写程序建立其顺序存储结构并完成插入或删除操作。

2、根据线性表L=(a,b,c,d,e,f),编写程序建立其链式存储结构并完成插入或删除操作。

三、实训步骤1、根据算法设计编写源程序;2、输入并编辑源程序;3、运行并分析程序;四、实训总结与体会[根据本次实训过程,总结你对线性表基本操作算法设计的基本体会]实训二栈和队列基本操作的算法设计一、实训目的与要求1、掌握栈的基本操作算法设计的实现;2、掌握队列的基本操作算法设计的实现。

二、实训内容1、根据栈S=(a,b,c,d,e),建立其顺序存储结构或链式存储结构,并完成对该栈的进栈或出栈操作;2、根据队列Q=(a,b,c,d,e),建立其顺序存储结构或链式存储结构,并完成对该队列的进队或出队操作;三、实训步骤1、根据算法编写源程序;2、输入并编辑源程序;3、调试、分析程序。

四、实训总结[根据本次实训内容和过程,总结你对栈、队列的基本操作算法设计的体会]实训三二叉树的遍历算法设计一、实训目的与要求1、掌握二叉树的链式存储结构的算法实现;2、掌握遍历二叉树的算法实现。

二、实训内容1、根据算法编写程序建立下图所示二叉树的链式存储结构(建立二叉链表);2、根据算法编写程序完成对该二叉树的中序遍历(或先序遍历、后序遍历)。

三、实训步骤1、根据算法编写程序;2、输入并编辑程序;3、运行并分析程序。

四、实训总结与体会【根据本次实训内容及过程,简述对二叉树存储结构的实现及遍历二叉树算法设计的体会】实训四图的存储及遍历算法设计一、实训目的与要求1、掌握图的邻接矩阵、邻接表存储结构的算法实现;2、掌握图的遍历算法设计。

《数据结构》上机实验要求

《数据结构》课程实验内容与要求一、课程简介本课程着重讲述①线性结构、树型结构、图等典型数据结构的逻辑特点、存储结构及其相应的基本算法。

②各种查找算法③典型内部排序算法。

二、实验的作用、地位和目的数据结构是一门技术基础课,通过实验深刻理解各种逻辑结构、存储结构的特性,培养为实际问题分析其数据对象、基本操作,选择逻辑结构、存储结构灵活应用基本算法,设计出具有专业水准的应用程序的能力。

三、实验方式与要求①首先要求学生在课下完成问题分析、算法设计,基本完成程序设计。

②实验时,每位学生使用一台微机,独立调试,完成程序。

③程序调试好后,由指导教师检测运行结果,并要求学生回答相关的问题。

教师评出检查成绩。

④学生记录程序的输入数据,运行结果及源程序。

⑤在一周内完成实验报告。

四、考核方式与实验报告要求实验成绩由指导教师根据学生的实验完成情况、源程序质量、回答问题情况、实验报告质量、实验纪律等方面给分。

学生在实验后的一周内提交实验报告。

实验报告首页按学校统一印刷的实验报告模版书写。

实验报告中应包括如下内容:☐实验内容按任课教师下达的实验任务填写(具体实验题目和要求);☐实验过程与实验结果应包括如下主要内容:算法设计思路简介算法描述:可以用自然语言、伪代码或流程图等方式算法的实现和测试结果:包括算法运行时的输入、输出,实验中出现的问题及解决办法等☐源程序清单与实验结果或其它说明可打印,并装订在实验报告首页之后。

☐实验报告雷同者,本次实验成绩为0分或雷同实验报告平分得分五、实验的软硬件环境硬件环境:PⅡ以上微型计算机软件环境:Windows98/2000, VC++6.0或turbo C六、实验内容安排实验一线性表应用实验时间:2012年3月16日,7-8节(地点:7-215)实验目的:理解线性表的逻辑特点;掌握顺序表、链表存储结构,以及线性表的基本操作,如插入、删除、查找,以及线性表合并等操作在顺序存储结构和链式存储结构上的实现算法,并能够在实际问题背景下的灵活运用线性表来解决问题,实现相应算法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数据结构》实践环节考核指导一、类型课程实验考核二、目的与要求本课程的目的和任务是使学习者掌握各种常用的数据结构和典型算法,为学习后续计算机专业课程提供必要的基础,提高学习者运用数据结构解决实际问题的能力。

本考核主要达到两个目的:1.检查学生对数据的逻辑结构、存储结构以及算法的理解程度。

2.检查学生对数据结构的选择以及算法设计和实现的应用能力。

三、考核环境软件要求:DOS 操作系统或Windows环境的MS-DOS模式;Turbo C 3.0系统。

四、考核内容1、线性表的插入和删除要求对有序顺序表进行插入和删除操作,设数据域为整数。

要求对有序单链表进行插入和删除操作,单链表的数据域是字符串,但不允许重复的串插入表中。

删除操作是根据输入的字符串,先找到相应的结果后删除之。

2、栈和队列操作对一些简单应用问题,如进制转换、字符串输入等,利用栈或队列来实现。

3、二叉树操作要求采用二叉链表作为存储结构,完成二叉树的建立,先序、中序和后序以及按层次遍历及求所有叶子和结点个数的操作等。

4、图的遍历操作可采用邻接矩阵或邻接表作为存储结构,完成有向图和无向图的DFS和BFS操作。

5、数据查找实现顺序查找、折半查找及二叉排序查找算法,比较他们的查找速度。

6、排序实现直接插入、冒泡、直接选择、快速、堆、归并排序、并鼓励实现基数排序。

比较各种排序算法的运行速度。

五、考核时间与形式考核时间为60分钟;采用闭卷形式,所有答案都直接做到考核盘上。

六、注意事项1、试卷和考核盘都要清楚地书写姓名、准考证号和机号信息;2、必须用蓝、黑色钢笔或圆珠笔书写,字迹要清楚、卷面要整洁。

3、考试期间严禁左顾右盼、交头接耳;对机器或试卷中出现的问题由监考老师负责解决。

七、题型与要求请参考以下样题。

样题一要求:将考试目录下的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)测试结果为:样题三要求:将考试目录下的c源程序test3.c(文件内容见附录三)复制到本地计算机的硬盘上,然后按要求填入相应的语句,调试运行,并按下面要求输入测试数据,在答题纸上写出你所填入的语句以及运行测试的结果。

题目:由键盘任意键入n个正整数,建立其二叉排序树的存储,中序遍历输出结点序列,删除若干数据后再按中序输入。

测试数据为:建立时输入25,12,53,45,36,7,78,62,输入0时为结束;依次插入数据45、60。

答案:(1)(2)(3)测试结果为:附录一:相关文件内容1.文件test1.c的内容:/*test1.c*/#define ListSize 10typedef int DataType;typedef struct{DataType data[ListSize];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;i<n;i++)scanf("%d",&L->data[i]);L->length=n;printf("请选择:\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);else deletelist(L);printf("当前顺序表中的数据为:\n");for (i=0;i<L->length;i++)printf("%3d",L->data[i]);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",&x);printf("\n在下面序列中插入%d\n",x);for(i=0;i<L->length;i++)printf("%3d",L->data[i]);i=0;/*********************************************************/ while (请考生填写(1)) i++;/*********************************************************/ if (x==L->data[i])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);printf("\n在下面序列中删除%d\n",x);for(i=0;i<L->length;i++)printf("%3d",L->data[i]);i=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*/#include <stdio.h>#include <stdlib.h>#define n 10#define Error printftypedef int KeyType;typedef char InfoType;typedef struct{KeyType key;InfoType otherinfo;}RecType;typedef RecType Seqlist[n+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",&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++)scanf ("%d",&S[i].key);break;case '2':printf("请输入要输出第几趟结果:"); scanf("\n%d",&m);for (i=1;i<n+1;i++)R[i].key=S[i].key;Heapsort();break;case '3':ch1='n';break;default:ch1='n';}}}void Heapify(int low,int high){int large;RecType temp=R[low];for (large=2*low;large<=high;large*=2){if (large<high && R[large].key<R[large+1].key) large++;if (temp.key>=R[large].key)break;R[low]=R[large];low=large;}R[low]=temp;}/*Heapify*/void BuildHeap(){/*将初始文件R[1...n]构造为大根堆*/int i;/****************************************/ 请考生填写(1)Heapify(i,n);/****************************************/ }void Heapsort(){/*对R[1...n]进行堆排序,用R[0]做暂存单元*/ int i,k;BuildHeap();for (i=n;i>1;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);}/**********************************************/请考生填写(2)/**********************************************/}printf("最终排序结果是:");for (k=1;k<=n;k++)printf("%5d",R[k].key);printf("\n");}/*Heapsort*/3.文件test3.c的内容:/*test3.c*/#include <stdio.h>#include <stdlib.h>typedef int KeyType;typedef struct node{KeyType key;struct node *lchild,*rchild;}BSTNode;typedef BSTNode *BSTree;BSTree CreateBST(void);void InsertBST(BSTree *Tptr,KeyType Key);void DelBSTNode(BSTree *Tptr,KeyType Key);void InorderBST(BSTree T);main(){BSTree T;char ch1,ch2;KeyType Key;printf("建立一棵二叉排序树的二叉链表存储\n");T=CreateBST();ch1='y';while (ch1=='y' || ch1=='Y'){printf("请选择下列操作:\n");printf("A------------------更新二叉排序树存储\n");printf("B------------------二叉排序树上的删除\n");printf("C------------------二叉排序树中序输出\n");printf("D------------------退出\n");scanf("\n%c",&ch2);switch (ch2){case 'A':case 'a':T=CreateBST();break;case 'B':case 'b':printf("\n请输入要删除的数据:");scanf("\n%d",&Key);DelBSTNode(&T,Key);printf("删除操作完毕。

相关文档
最新文档