数据结构与算法实验任务书.

合集下载

数据结构与算法任务书-总论

数据结构与算法任务书-总论

算法与数据结构课程设计任务书(2014级软件工程本科专业)题目类型:软件工程(R)指导教师:李睿一.题目简介1.扫雷问题。

有些个人计算机会带有一个名为Minesweeper的游戏。

该游戏界面是一个网格,网格中的有些方块是雷。

编写一个程序以读取文件,该文件中存放着网格中的行数、列数以及网格本身。

网格会含有一些标记为o的方块,这些就是雷。

其他方块不是雷,将会标记上问号(?)。

程序的输出就是输出这个网格。

雷依然会标记成o,而那些不含雷的方块会替换成一个数字,以表明邻近雷的个数。

最大数字将是8。

(4)例如:1 5 52?o??? 2 2o2113o??o? 3 o33o24??o?o 4 34o4o5oo?o? 5 oo4o26?o??? 6 3o3112.求素数问题。

埃拉托色尼筛法(Sieve of Eratosthenes)是一种用来求所有小于N的素数的方法。

从建立一个整数2~N的表着手,寻找i˂错误!未找到引用源。

的整数,编程实现此算法,并讨论运算时间。

(1)3.方程求解问题。

方程A5+B5+C5+D5+E5=F5刚好有一个满足0≤A≤B≤C≤D≤E≤F≤75的整数解。

请编写一个求出该解的程序。

(3)4.最短字符串问题。

编写一个程序,从输入中读取字符串,并按长度顺序,最短字符串优先的原则输出它们。

如果有若干字符串具有相同的长度,就按字母顺序输出它们。

(3)5.计算1的个数问题。

编写递归程序,返回十进制数N的二进制表示中1的个数。

(2)6.排序重构问题。

令A为一个由N个已特殊排序数组成的数列:A1,A2,…,A N,其中A1=0。

令B为N(N-1)/2个数(定义为B ij=A i-A j(i>j))组成的数列。

例如,A=0,1,5,8,那么D=1,3,4,5,7,8。

请完成:1)编写程序,根据A构造D;2)编写程序,构造与D相对应的某一个数列A,注意A不是唯一的。

(4)7.占用网格计算问题。

考虑一个N*N的网格,其中某些方格已被占用。

《数据结构与算法实验》任务书

《数据结构与算法实验》任务书

《数据结构与算法实验》任务书《数据结构与算法实验》任务书实验一动态链表的设计与应用一、实验目的、要求1、掌握使用VC 6.0上机调试线性表的基本方法;2、掌握线性表的基本操作:插入、删除、查找以及线性表合并等运算在顺序存储结构和链式存储结构上的运算。

二、实验内容1.输入一组学生信息,建立一个单链表。

2.遍历该链表,输出学生信息。

3.查找某特定的学生,查找成功返回1,否则返回0。

4.编写在非递减有序链表中插入一个元素使链表元素仍有序的函数,并利用该函数建立一个非递减有序单向链表。

5.利用算法4建立两个非递减有序单向链表,然后合并成一个非递增链表。

*6.采用单向链表实现一元多项式的存储并实现两个多项式相加并输出结果。

7.编写一个主函数,调试上述算法。

*8.综合训练:利用链表实现一个班级学生信息管理(数据录入、插入、删除、排序、查找等,并能够实现将数据存储到文件中)三、实验说明1.存储定义#define MAXSIZE 100 //表中元素的最大个数typedef int ElemType;//元素类型typedef struct list{ElemType elem[MAXSIZE];//静态线性表int length; //表的实际长度}SqList;//顺序表的类型名2.建立顺序表时可利用随机函数自动产生数据。

四、注意问题1.插入、删除时元素的移动原因、方向及先后顺序。

2.了解不同的函数形参与实参的传递关系。

一、实验目的、要求1.掌握栈、队列的思想及其存储实现。

2.掌握栈、队列的常见算法的程序实现。

二、实验内容1.采用链式存储实现栈的初始化、入栈、出栈操作。

2.采用顺序存储实现栈的初始化、入栈、出栈操作。

3.采用链式存储实现队列的初始化、入队、出队操作。

4.采用顺序存储实现循环队列的初始化、入队、出队操作。

5.在主函数中设计一个简单的菜单,分别测试上述算法。

*6.综合训练:1)利用栈实现表达式求值算法。

数据结构与算法实习_实验指导书

数据结构与算法实习_实验指导书

数据结构与算法实习_实验指导书数据结构与算法课程实习实验指导书目录实验一顺序表的基本操作 (2)实验二链表的基本操作 (3)实验三二叉树的基本操作 (4)实验四综合应用 (5)附录A 实验报告示例 (9)附录B实验报告封面、评语得分表 (12)实验一顺序表的基本操作【实验目的】1、掌握顺序存储的概念,学会对顺序表的基本操作。

2、加深对顺序存储数据结构的理解,逐步培养解决实际问题的能力。

【实验性质】设计型实验【实验内容】1、实现顺序表显示;2、实现顺序表插入;3、实现顺序表查找(显示比较次数);4、实现顺序表删除(显示移动次数);5、实现顺序表排序(分别实现简单选择、快速,显示比较次数、移动次数);6、实现顺序表的折半查找(显示比较次数);7、编程实现一个顺序表的就地逆置,即利用原表的存储空间将顺序表逆置;8顺序表有序插入(显示比较次数、移动次数),屏幕提示后,从键盘输入一个元素值,在经过排序的线性表中插入这个元素;屏幕显示比较次数和移动次数,应有溢出判断和报告;9、要求以较高的效率实现删除顺序表中元素值在x到y(x和y自定)之间的所有元素;10、编程实现将两个非递减的顺序表进行合并,要求同样的数据元素只出现一次;*11、编程实现顺序表的shell排序(步长为5, 3,1);*12、编程实现堆排序算法;*13、利用三元组顺序表存储矩阵,实现矩阵的转置(请独立写程序实现)。

【实验环境】VC++ 6.0【实验要求】将如上文件保存在命名为学号+姓名”勺文件夹中并上传到指定的服务器。

实验二链表的基本操作【实验目的】1、掌握链表的概念,学会对链表进行操作。

2、加深对链式存储结构的理解,逐步培养解决实际问题的编程能力。

【实验性质】设计型实验【实验内容】1、实现单链表的创建;2、实现单链表的显示;3、实现单链表的查找(显示比较次数);4、实现单链表的插入;5、实现单链表的删除(显示比较次数);6、对已创建的链表(数据不限)进行直接插入排序;7、将链接存储线性表逆置,即最后一个结点变成第1个结点,原来倒数第2个结点变成第2个结点,如此等等;8、生成有序的两个单链表A和B (链表的数据和个数自定),其首结点指针分别为a 和b,要求将两个单链表合并为一个有序的单链表C,其首结点指针为c,并且合并后的单链表的数据不重复;9、将一个首结点指针为a的单链表A分解成两个单链表A和B,其首结点指针分别为a和b,使得链表A中含有原链表A中序号为奇数的元素,而链表B中含有原链表A中序号为偶数的元素,且保持原来的相对顺序;10、请编程实现链栈的基本操作函数,并通过调用这些基本函数,实现十进制和八进制转换的功能。

数据结构与算法课程设计教学任务书

数据结构与算法课程设计教学任务书

《数据结构与算法》课程设计教学任务书一、课程设计的目的数据结构与算法课程主要是研究非数值计算的程序设计问题中所出现的计算机操作对象以及它们之间的关系和操作的学科。

数据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。

学习数据结构与算法是为了将实际问题中涉及的对象在计算机中表示出来并对它们进行处理。

通过课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。

通过此次课程设计主要达到以下目的:了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;提高综合运用所学的理论知识和方法独立分析和解决问题的能力;训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。

二、课程设计的基本要求1. 独立思考,独立完成:课程设计中各任务的设计和调试要求独立完成,遇到问题可以讨论,但不可以拷贝。

2. 做好上机准备:每次上机前,要事先编制好准备调试的程序,认真想好调试步骤和有关环境的设置方法,准备好有关的文件。

3. 按照课程设计的具体要求建立功能模块,要求按照如下几个内容认真完成:1)需求分析:在该部分中叙述,所选课题的功能要求。

2)概要设计:在此说明所选课题的功能模块,以及每个功能模块的算法设计(可以是描述算法的功能模块图),所选课题的的数据结构以及其存储结构设计说明等。

(如果指定存储结构请写出该存储结构的定义)3)详细设计:针对2)中的主要功能模块,画出流程图,给出主要功能模块的流程图、算法及必要的文字说明)4)编码实现:给出3)中主要功能模块的函数实现,重点是函数的声明,变量或参数的说明,以及程序的功能说明与注释,不必把所有代码都写上,主要写出其声明与注释等。

数据结构与算法课程设计任务书

数据结构与算法课程设计任务书

数据结构与算法课程设计任务书使用时间:2011-2012学年第2学期一、课程设计目的本课程设计的目的就是要达到理论与实际应用相结合,使同学们能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养基本的、良好的程序设计技能。

二、课程设计题目共10题,每个学生一题,单独完成。

(选法为根据学生所在班级名册的自然顺序,第1-12名同学分别做第1到第12题,然后循环,第13-24名同学分别做第1到第12题,依次类推。

)1、银行业务活动的模拟任务:假设某银行有4个窗口对外接待客户,从早晨银行开门起不断有客户进入银行,由于每个窗口在某个时刻只能接待一个客户。

因此在客户人数众多时需要在每个窗口前顺次排队,对于刚进入银行的客户。

如果某个窗口的业务员正空闲,则可上前输业务。

反之,若个窗口均有客户所占,他便会排在为数最少的队伍后面。

编制一个程序模拟银行的这种业务活动并计算一天中客户在银行的平均逗留时间。

功能要求:1).实现数据的输入;2).各个窗口数据的访问和输出;3)当前窗口的人员分布情况动态显示。

界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。

存储结构:学生自己根据系统功能要求自己设计。

请在最后的上交资料中指明你用到的存储结构;测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。

进行程序测试,以保证程序的稳定。

测试数据及测试结果请在上交的资料中写明;2、航班订票系统任务:通过此系统可以实现如下功能:1)、录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)2)、查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;3)、订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;4)、退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。

《数据结构与算法》实验指导书(计科101)

《数据结构与算法》实验指导书(计科101)

职业技术、职业师范学院《数据结构和算法》实验指导书适用专业:计算机科学与技术专业贵州大学二OO九年二月前言数据结构和算法是计算机课程的一门重要的基础课,它的教学要求大致有三个重要方面:其一就是让学生学会分析研究计算机加工的数据对象的特性,以便为数据选择适当的物理结构和逻辑结构;其二,根据结构,选择适当的算法,并初步掌握算法的时间分析和空间分析;其三,学习复杂的程序设计。

基于以上的三点要求,在编写这本实验指导书时贯穿这样的中心思想:让读者通过实验课,理论结合实践,达到这三点要求。

读者在使用这本书时,要以这三点要求为出发点,力求理解结构、掌握算法、读懂程序。

依据理论课的讲授情况,本书的实验安排以表(包括有序表、链表等),树,图三个基本的数据结构为重点。

实验一:有序表的建立、插入与删除实验学时:2实验类型:验证实验要求:必修一、实验目的1、了解有序表的顺序存贮结构。

2、掌握有序表元素在内存中是怎样存贮的。

二、实验内容在有序表中实现如下操作:1、插入一个新元素到第i个位置。

使原来标号为增1。

2、删除第i个位置的元素。

3、存一个新元素到第i个位置。

4、读表5、检索表中第i个元素。

6、求表的长度三、实验原理、方法和手段1、插入一个新元素到第i个位置,既把元素ai向后移一个位置,成为元素ai+1,把新元素放入到第i个位置,其他元素依次后移。

存一新元素到第i个位置是把元素ai冲掉后存上新值。

删除第i个元素就是把余后的元素依次向前移一个位置。

即:以元素ai+1,ai+2,···,依次取代ai,ai+1,···。

删除后的表长是n-1(n是原表长)。

4、参考程序/* 有序表的建立、插入与删除 */static int array[100];int j,i,n,p;int ch;void du(){printf("please tell me which numbers do you operate:");scanf("%d",&i);while (i>n){printf("ERROR,please enter new element");scanf("%d",&i);}}void da(){printf("the list is:");for(j=0;j<n;j++)printf("%3d",array[j]);printf("\n");}void show(){printf("-----------------------------------\n"); printf(" the function of the list\n");printf(" 1: insert\n");printf(" 2: delete\n");printf(" 3: save new element\n");printf(" 4: read list\n");printf(" 5: check\n");printf(" 6: the length of the list\n");printf(" 0: end\n");printf("-----------------------------------\n"); }main(){printf("please input the length of list:");scanf("%d",&n);printf("\n");printf("please enter number:");for (i=0;i<n;i++)scanf("%d",&array[i]);p=1;while (p!=0){show();printf ("enter p: ");scanf("%d",&p);if(p>=0&&p<=6){switch(p){case 1:printf("the inserted number places the front of the operation\n");du();for (j=n-1;j>=i-1;j--)array[j+1]=array[j];printf("please enter number:\n");scanf("%d",&ch);array[i-1]=ch;n+=1;da();break;case 2:du();for(j=i-1;j<=n;j++)array[j]=array[j+1];n-=1;da();break;case 3:du();printf("please enter new number:\n");scanf("%d",&ch);printf("\n");array[i-1]=ch;da();break;case 4:da();break;case 5:du();printf("what is the %d number:",i);printf("%3d\n",array[i-1]);break;case 6:printf("the length of the list is:");printf("%3d\n",n);break;case 0: p=0; break;}}}printf("ERROR,please enter new number\n");}四、实验组织运行要求本实验根据课堂教学进度,讲授相关知识后组织到计算机实验室进行实验。

算法与数据结构课程设计任务书

算法与数据结构课程设计任务书

算法与数据结构课程设计任务书1、实训意义和目的使学生巩固和加强《C语言程序设计》和《数据结构与算法》课程的理论知识。

使学生掌握C语言的基本概念、语法、语义和数据类型的使用特点。

使学生掌握C语言程序设计的方法及编程技巧,能正确使用C语言编写程序。

进一步理解和运用结构化程设计的思想和方法;学会利用流程图或N-S图表示算法。

使学生掌握调试程序的基本方法及上机操作方法。

掌握书写程设计开发文档的能力,使学生学会撰写课程设计总结报告。

课学生做毕业设计打好基础。

初步掌握开发一个小型实用系统的基本方法:结合实际应用的要求,使课程设计既覆盖知识点,又接近工程实际需要。

通过激发学习兴趣,调动学生主动学习的积极性,并引导他们根据实际编程要求,训练自己实际分析问题的能力及编程能力,并养成良好的编程习惯。

培养学生的创新能力和创新思维。

学生可以根据指导书和相关文献上的参考算法,自己设计出相应的应用程序。

培养学生良好的程序设计风格。

在实际编程中,为了提高编程质量,对空行、空格和注释均有要求。

学生在课程设计书写代码时,应该严格按要求处理,以便建立良好的程序设计风格。

2、实训目标及要求参加本课程设计的学生,应当认真完成本课程设计的全部过程。

并以最终课程设计成果来证明其独立完成各种实际任务的能力。

从而,反映出理解和运用本课程知识的水平和能力。

A、分析问题。

各种简单的与计算机有关的案例中所需要的输出结果,把大问题分解成小问题,使用自顶向下或类似设计方法给出模块化或计划。

B、提出算法执行特定任务。

模块表示为算法,使用自顶向下或伪代码等设计手段将模块细化成更详细的成分,清楚地表明顺序、选择和重复等到控制结构。

C、把一个算法变为用C语言编写的结构化程序。

D、用合适的测试方法检查程序是否符合最初的要求,为不合适数据设计错误陷阱,并提供错误信息来帮助用户。

E、写出清晰的用户文档,确保用户或者通过遵循程序中的指示或者使用程序设计者编写的文档能成功地运行程序。

《数据结构与算法分析课程设计》任务书2012版

《数据结构与算法分析课程设计》任务书2012版

《数据结构与算法分析课程设计》任务书2012版任务书一、任务背景数据结构与算法是计算机科学与技术专业的重要课程之一,旨在培养学生分析和解决复杂问题的能力。

本课程设计主要通过一个真实案例,让学生深入理解数据结构与算法的应用,并能够独立完成相应的设计和开发任务。

二、任务目标1. 掌握数据结构与算法的基本概念和原理。

2. 能够分析问题需求,设计合适的数据结构与算法解决方案。

3. 能够独立完成课程设计,并能进行有效的测试和调试。

三、任务要求1. 学生根据给定的案例,自行选择实现语言和开发环境。

2. 实现一个能够对输入的数据进行处理的程序,要求程序能够正确处理各种边界情况。

3. 程序设计要求使用合理的数据结构和算法,保证程序的运行效率和资源利用率。

4. 程序要求具备良好的用户界面,可以直观地显示程序的运行结果。

5. 程序应回归测试要求覆盖到各种情况,并能够快速定位和修复问题。

6. 学生需要在规定的时间内完成程序设计,并进行提交和展示。

四、任务安排1. 学生在完成任务前需要对数据结构与算法的相关知识进行系统学习。

2. 学生需在规定时间内完成项目的需求分析和整体设计。

3. 学生需按照设计要求进行程序的开发和功能测试。

4. 学生需要撰写完整的设计文档和用户手册,并进行提交。

5. 学生需按时进行项目的汇报和展示。

五、任务考核1. 根据学生提交的设计文档和用户手册进行初步评估。

2. 进行功能和性能测试,评估程序的稳定性和可靠性。

3. 根据学生的汇报和展示内容进行最终评定。

4. 综合考虑学生的完成情况和表现,给予相应的得分和评价。

六、参考要求1. 参考书目:《算法导论》、《数据结构与算法分析》等。

2. 参考案例:从现实生活中选取一个相关案例,如银行排队系统、图书管理系统等。

七、附件附件1:数据结构与算法课程设计案例(具体案例请参考附件1)八、备注任务书的内容根据2012版的数据结构与算法分析课程设计要求编写,要求学生完成相应的设计和开发任务。

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

《数据结构与算法实验》任务书实验一动态链表的设计与应用一、实验目的、要求1、掌握使用VC 6.0上机调试线性表的基本方法;2、掌握线性表的基本操作:插入、删除、查找以及线性表合并等运算在顺序存储结构和链式存储结构上的运算。

二、实验内容1.输入一组学生信息,建立一个单链表。

2.遍历该链表,输出学生信息。

3.查找某特定的学生,查找成功返回1,否则返回0。

4.编写在非递减有序链表中插入一个元素使链表元素仍有序的函数,并利用该函数建立一个非递减有序单向链表。

5.利用算法4建立两个非递减有序单向链表,然后合并成一个非递增链表。

*6.采用单向链表实现一元多项式的存储并实现两个多项式相加并输出结果。

7.编写一个主函数,调试上述算法。

*8.综合训练:利用链表实现一个班级学生信息管理(数据录入、插入、删除、排序、查找等,并能够实现将数据存储到文件中)三、实验说明1.存储定义#define MAXSIZE 100 //表中元素的最大个数typedef int ElemType;//元素类型typedef struct list{ElemType elem[MAXSIZE];//静态线性表int length; //表的实际长度}SqList;//顺序表的类型名2.建立顺序表时可利用随机函数自动产生数据。

四、注意问题1.插入、删除时元素的移动原因、方向及先后顺序。

2.了解不同的函数形参与实参的传递关系。

一、实验目的、要求1.掌握栈、队列的思想及其存储实现。

2.掌握栈、队列的常见算法的程序实现。

二、实验内容1.采用链式存储实现栈的初始化、入栈、出栈操作。

2.采用顺序存储实现栈的初始化、入栈、出栈操作。

3.采用链式存储实现队列的初始化、入队、出队操作。

4.采用顺序存储实现循环队列的初始化、入队、出队操作。

5.在主函数中设计一个简单的菜单,分别测试上述算法。

*6.综合训练:1)利用栈实现表达式求值算法。

2)利用栈实现迷宫求解。

三、实验说明1.基本要求:实现算法1、3或算法2、4即可。

2.类型定义顺序栈示例#define MAX 100 //栈的最大值typedef struct{ElemType *base;int top;}SqStack;顺序队列示例#define MAX 100 //队列的最大长度typedef struct{ElemType *base;int front,rear;}SqQueue;3.算法6的每个子功能尽可能写成函数形式。

四、注意问题1.重点理解栈、队列的算法思想,能够根据实际情况选择合适的存储结构。

2.注意算法6的各个函数之间值的传递情况。

3.栈、队列的算法是后续实验的基础(广义表、树、图、查找、排序等)。

一、实验目的、要求1.进一步掌握指针变量的含义。

2.掌握二叉树的结构特征,以及各种存储结构的特点及使用范围。

3.掌握用指针类型描述、访问和处理二叉树的运算。

4.掌握二叉树的存储实现。

5.掌握二叉树的遍历思想。

6.掌握二叉树的常见算法的程序实现。

二、实验内容1.输入字符序列,建立二叉树。

2.中序遍历二叉树:递归算法。

3.中序遍历二叉树:非递归算法。

(最好也能实现先序,后序非递归算法) 4.求二叉树的高度 。

5.求二叉树的叶子个数。

*6.将二叉链表视为森林的孩子兄弟链表,计算森林中叶子个数。

*7.建立中序线索二叉树,并实现中序遍历。

8.借助队列实现二叉树的层次遍历。

9.在主函数中设计一个简单的菜单,分别调试上述算法。

三、实验说明1.类型定义 //二叉链表存储#define ElemType char//元素类型typedef struct BiTNode{ElemType data;struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;2.元素类型可以根据实际情况选取。

四、注意问题1.注意理解递归算法的执行步骤。

2.注意字符类型数据在输入时的处理。

3.重点理解如何利用栈结构实现非递归算法。

实验四赫夫曼编码与压缩一、实验目的、要求熟练掌握二叉树应用(Huffman编码)的基本算法实现二、实验内容1. 统计字符串中字符的种类以及各类字符的个数的函数2. 实现构造Huffman树的函数3. 实现Huffman编码的函数4. 建立正文的编码文件的函数5.代码文件的译码函数6.在主函数中设计一个简单的菜单,分别调试上述算法。

7. 综合训练:输入一段文本, 统计其中字符出现频率, 设计实现相应的Huffman树和Huffman码, 并完成对该段文本的编码与译码。

三、实验说明typedef struct {int weight; //权值int lchild , rchild , parent; //左右孩子及双亲指针}HTNode; //树中结点类型typedef HTNode HuffmanTree[m+1]; //0号单元不用实验五最短路径算法的实现与应用一、实验目的、要求1.掌握图的存储思想及其存储实现。

2.掌握图的深度、广度优先遍历算法思想及其程序实现。

3.掌握图的常见应用算法的思想及其程序实现。

二、实验内容1.键盘输入数据,建立一个有向图的邻接表。

2.输出该邻接表。

3.以有向图的邻接表为基础实现输出它的拓扑排序序列。

4.采用邻接表存储实现无向图的深度优先非递归遍历。

5.采用邻接表存储实现无向图的广度优先遍历。

6.采用邻接矩阵存储实现无向图的最小生成树的PRIM算法。

7.在主函数中设计一个简单的菜单,分别调试上述算法。

8.综合训练:以全国主要城市为图的顶点, 铁路连接为图的边, 距离作为加权, 设计完成一个最短路径自动查找系统. 输入为出发城市和目标城市, 输出为最短路径和距离。

进阶:加入中国地图作为背景,出发城市和目标城市采用鼠标点击输入。

三、实验说明1.类型定义(邻接表存储)#define MAX_VERTEX_NUM 8 //顶点最大个数typedef struct ArcNode{int adjvex;struct ArcNode *nextarc;int weight; //边的权}ArcNode; //表结点#define VertexType int //顶点元素类型typedef struct VNode{int degree,indegree;//顶点的度,入度VertexType data;ArcNode *firstarc;}VNode/*头结点*/,AdjList[MAX_VERTEX_NUM];typedef struct{AdjList vertices;int vexnum,arcnum;//顶点的实际数,边的实际数}ALGraph;2.上述类型定义可以根据实际情况适当调整。

实验六内部排序算法的实现与比较一、实验目的、要求1.掌握常见的排序算法的思想及其适用条件。

2.掌握常见的排序算法的程序实现。

二、实验内容输入一组关键字序列分别实现下列排序:1.实现简单选择排序、直接插入排序和冒泡排序。

2.实现希尔排序算法。

3.实现快速排序算法。

4.实现堆排序算法。

5.快速排序的非递归算法。

*6.实现折半插入排序。

*7.采用链式存储实现简单选择排序、直接插入排序和冒泡排序。

8.在主函数中设计一个简单的菜单,分别测试上述算法。

9.综合训练:采用几组不同数据测试各个排序算法的性能(比较次数和移动次数)。

三、实验说明1.类型定义#define MAXSIZE 100 /*参加排序元素的最大个数*/typedef struct list{int key;}RedType;typedef struct {RedType r[MAXSIZE+1];int length; /*参加排序元素的实际个数*/}SqList;2.算法5可以借助栈实现。

四、注意问题1.在RedType中增加一个数据项验证各种排序算法的稳定性。

2.注意理解各种算法的思想、了解算法的适用情况及时间复杂度,能够根据实际情况选择合适的排序方法。

实验七查找算法的实现一、实验目的、要求1.掌握折半查找算法的思想及程序实现。

2.掌握二叉排序树、B树的查找、插入、删除、建立算法的思想及程序实现。

3.掌握散列存储结构的思想,实现不同冲突处理方法的散列表的查找、建立。

二、实验内容1.利用实验一建立有序表,采用折半查找实现某一已知的关键字的查找。

2.随机产生一组关键字,利用二叉排序树的插入算法建立二叉排序树,然后删除某一指定关键字元素。

3.建立B树并实现删除某一指定关键字元素。

4.已知散列函数为H(key)=key%p(p为自定的常数),冲突处理方法分别为线性探测法、外拉链法实现散列表的建立(利用插入算法实现)。

三、实验说明1.存储定义(散列表的外拉链法)#define n 9typedef struct node{int key;struct node *next;}NODE;NODE *HashTable[9];算法1、2、3可以参考顺序表,二叉链表的存储实现。

2.各种关键字数据输入可利用随机函数自动产生,以便节省上机时间。

四、注意问题1.注意理解折半查找的适用条件(链表能否实现折半查找?)。

2.注意建立二叉排序树、散列表时相同元素的处理。

3.注意理解静态查找、动态查找概念。

4.比较各种查找算法的各自特点,能够根据实际情况选择合适的查找方法。

相关文档
最新文档