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

合集下载

数据结构与算法数据结构与算法实验

数据结构与算法数据结构与算法实验

数据结构与算法数据结构与算法实验一、实验目的二、实验内容(1)数据结构的实现:例如,链表、栈、队列、树、图等。

学生需要实现这些数据结构的基本操作,如插入、删除、遍历等。

(2)算法设计与分析:例如,排序算法、查找算法、图算法等。

学生需要实现并分析这些算法的时间复杂度和空间复杂度。

(3)实验报告的撰写:学生需要按照实验要求撰写实验报告,包括实验目的、实验内容、实验结果等。

实验报告可以帮助学生更好地总结和理解实验过程中遇到的问题和解决方法。

三、实验要求在进行数据结构与算法实验时,学生需要注意以下几个要求:(1)合理安排时间:数据结构与算法实验需要一定时间来完成,学生需要提前规划好时间,合理安排实验的进行。

(2)认真实验:学生在进行实验时需要认真对待每一步操作,确保实验过程的准确性和完整性。

(3)作业自主完成:学生需要独立完成实验作业,只有通过自己的努力才能够真正掌握数据结构与算法的知识。

(4)及时求助:如果在实验过程中遇到问题,学生应该及时向老师或同学求助,以免耽误实验的进行。

四、实验感想数据结构与算法实验是非常有收获的一门课程。

通过实验,我不仅加深了对数据结构与算法的理解,还学会了如何应用它们来解决实际问题。

实验中我遇到了一些困难,但通过不断的思考和尝试,我最终找到了解决问题的方法。

实验报告的撰写也让我更好地总结和理解实验的过程。

通过实验,我发现数据结构与算法的学习并不是一蹴而就的,需要不断地练习和思考。

只有在实践中才能真正掌握它们。

同时,数据结构与算法实验也锻炼了我的动手能力和解决问题的能力,提高了我的编程水平和分析思维。

总而言之,数据结构与算法实验是一门非常重要和有趣的课程。

通过实验,我们可以更好地理解和应用数据结构与算法,提高自己的编程能力和解决问题的能力。

希望今后我们能够不断地学习和实践,不断提高自己的数据结构与算法水平。

《数据结构与算法设计》实验大纲及实验内容详细要求

《数据结构与算法设计》实验大纲及实验内容详细要求

《数据结构与算法设计》实验大纲及实验内容详细要求一、课程编号:040039二、课程类型:必修适用专业:通信工程实验学时:32学时三、本课程的地位、作用与任务数据结构课程的目标是使学生掌握数据的基本的逻辑结构和存储结构、一些典型的数据结构算法及程序设计方法,要求学会分析数据对象特征,掌握数据组织方法和计算机的表示方法,为数据选择适当的逻辑结构、存储结构以及相应的处理算法,要求具备算法分析的基本技术和能力,并培养良好的程序设计风格,掌握开发复杂、高效程序的技能。

在实验前要预习或者自行补充部分学时,同时进行部分代码准备,实验后要认真完成实验报告。

四、课程基本要求1.学生应根据每个实验的任务和教师所提的要求,带C语言教材和课程教材。

2.完成指定的实验任务,保存源代码并输出、记录实验结果。

3.实验结束后按时提交实验报告,对于未完成部分,应该利用课余时间补充完成。

五、实验安排本实验课程共32学时,五个实验(单元),分16次实验,每次2学时。

实验一:C程序编程、调试实验1、实验学时:4学时(学生堂下自行加4学时)2、实验目的:1)巩固复习前期所学C语言的基本数据类型和自定义数据类型等知识点,强化学习数据结构语言和编程基础。

2)巩固复习前期所学C语言的函数参数传递、指针和结构体等知识点,加强学习数据结构语言基础。

3)能够较熟练调试程序3、实验内容:1)学生信息的显示。

具体要求如下:●定义一个结构体描述学生信息(学号,姓名,性别,年龄,住址);●设计一个函数,用于显示单个学生信息,函数的参数为前面定义的结构体类型;●设计一个主函数,在主函数中输入学生的信息,并调用前面定义的函数进行显示(学生人数不少于5人)。

2)输入若干个整数存储到数组元素值,然后按输入顺序进行逆置存储,最后打印出逆置后的元素值。

要求用指针和动态内存分配方法实现。

例如输入:1023045,逆置后显示为:5430210。

3)编写扑克牌发牌程序。

在VC++的调试环境下观察数据存储位置、存储数据的变化、数据之间的逻辑次序、物理存储位置次序。

数据结构实验指导书(新版)

数据结构实验指导书(新版)

《数据结构和算法》实验指导书实验及学时数分配序号实验名称学时数(小时)1 实验一线性表 42 实验二树和二叉树 23 实验三图 24 实验四查找 25 实验五内部排序 2合计12几点要求:一、上机前:认真预习相关实验内容,提前编写算法程序,上机时检查(未提前编写程序者,扣除平时成绩中实验相关分数)。

二、上机中:在Turbo C或VC6.0环境中,认真调试程序,记录调试过程中的问题、解决方法以及运行结果。

上机时签到;下机时验收签字。

三、下机后:按要求完成实验报告,并及时提交(实验后1周内)。

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

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

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

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

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

【实验步骤】一、用C语言编程实现建立一个顺序表,并在此表中插入一个元素和删除一个元素。

1、通过键盘读取元素建立线性表;(从键盘接受元素个数n以及n个整形数;按一定格式显示所建立的线性表)2、指定一个元素,在此元素之前插入一个新元素;(从键盘接受插入位置i,和要插入的元素值;实现插入;显示插入后的线性表)3、指定一个元素,删除此元素。

《数据结构》实验要求与规范

《数据结构》实验要求与规范

《数据结构》实验要求与规范【基本要求】1.正确实现所要求的功能,按时提交实验报告。

2.实验报告内容应依次包括:⑴实验目的;⑵实验内容与要求;⑶数据结构设计;⑷算法设计;⑸测试结果;⑹心得体会。

3.程序用C语言或C++语言实现。

4.在包含主函数的程序文件起始处添加包含如下内容的注释:所引用代码和资料的出处、设计本程序时谁在哪些地方帮助过你。

5.在程序文件起始处添加包含如下内容的注释:文件名称、创建者姓名班级学号、创建时间、最后修改时间、文件中所定义的函数的名称和主要功能、文件中所定义的全局变量的变量名和主要功能、文件中用到的他处定义的全局变量及其出处、与其他文件的依赖关系。

6.对每个函数添加包含如下内容的注释:函数名称、函数主要功能、函数调用之前的预备条件、函数的输入参数、函数的输出参数、函数的返回值、该函数与其它函数的调用和被调用关系。

// 、姓名:陈明琨班级:计科4班学号12 参考数据结构课本及部分网络文库实验二顺序表的实现和应用实验目的:⑴熟悉线性表的定义和基本操作;⑵掌握线性表的顺序存储结构设计与基本操作的实现。

实验内容与要求:⑴定义线性表的顺序存储表示;⑵基于所设计的存储结构实现线性表的基本操作;⑶编写一个主程序对所实现的线性表进行测试;⑷线性表的应用:①设线性表L1和L2分别代表集合A和B,试设计算法求A和B的并集C,并用线性表L3代表集合C;②(选做)设线性表L1和L2中的数据元素为整数,且均已按值非递减有序排列,试设计算法对L1和L2进行合并,用线性表L3保存合并结果,要求L3中的数据元素也按值非递减有序排列。

实验三、四链表的实现和应用实验目的:掌握线性表的链式存储结构设计与基本操作的实现。

实验内容与要求:⑴定义线性表的链式存储表示;⑵基于所设计的存储结构实现线性表的基本操作;⑶编写一个主程序对所实现的线性表进行测试;⑷线性表的应用:①设线性表L1和L2分别代表集合A和B,试设计算法求A和B的并集C,并用线性表L3代表集合C;②设线性表L1和L2中的数据元素为整数,且均已按值非递减有序排列,试设计算法对L1和L2进行合并,用线性表L3保存合并结果,要求L3中的数据元素也按值非递减有序排列。

算法与数据结构-上机实验大纲

算法与数据结构-上机实验大纲

《算法与数据结构》实验(上机)大纲课程名称:算法与数据结构上机学时:16学时适用专业:软件工程一、实验(上机)课程的性质、目的与任务:《算法与数据结构》是软件工程专业的一门专业必修课,是理论与实践并重的课程。

实验是该课程实践教学环节的重要环节,它的内容覆盖了算法与数据结构的各个主要部分。

通过实验可以加深对数据结构基本概念、基本理论的理解,使学生巩固和运用所学知识以解决实际的具体问题,同时提高程序设计和实际操作的能力,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。

原则上要求学生针对实际问题进行数据结构设计、算法设计、编程调试、算法测试和优化,获得运行结果,并作为课程考核内容的一部分,也为后续课程的学习打下良好的基础。

二、实验(上机)报告内容⒈问题描述:包括需求分析、实现目标、任务、条件和约束的描述。

充分地分析和理解问题本身,弄清要求做什么,包括功能要求、性能要求、设计要求和约束以及基本数据特性,数据间的联系等。

⒉设计:包括概要设计和详细设计在概要设计中,第一步先进行数据结构设计:针对要求解决的问题,考虑各种可能的数据结构,还可以根据算法的时间复杂度和空间复杂度一起考虑,以确定最合适的数据结构,主要描述逻辑结构。

第二步进行关键算法设计:对每个算法的功能及初始条件和操作结果认真分析确定,并针对模块化开发的特点,自顶向下分解成若干顺序模块,确定模块间的相互关系以及模块之间的信息交换问题。

第三步设计主控模块及功能模块层次间的结构;在详细设计中,第一步对数据结构的存储结构进行描述,对数据结构的逻辑结构和物理结构进行定义,掌握其特点和映射关系。

第二步对每个算法进行实现,包括输入、处理和输出的描述。

程序代码尽可能的多加注释,用C语言实现。

3.测试:准备典型测试数据和测试方案,对测试结果进行分析与讨论,对测试过程中遇到的主要问题及所采用的解决措施进行总结,以优化算法。

⒋使用说明和作业小结(如果有):⑴使用说明主要描述如何使用你的程序以及使用时的主要事项;⑵在小结中说明实验过程中碰到的问题,算法的改进思想、经验和体会。

数据结构与算法上机实验报告

数据结构与算法上机实验报告

数据结构与算法B上机实验报告第1次2011-10-02 顺序表的实现和基本操作第2次2011-10-29 二叉树的实现和递归遍历第3次2011-11-23 内部排序第4次2011-12-dd 实现图从邻接矩阵到邻接表存储转化第一次线性表数据结构一、上机实习题目线性链表操作——插入、删除、合并、排序、查找二数据结构设计(算法设计)源程序(#include <iostream>#define MaxSize 100using namespace std;typedef int ElemType;class SeqList{ElemType list[MaxSize];int length;public:SeqList() {length=0;}void SeqListSort(int i,ElemType x);void SeqListCreat(int n);void SeqListInset(int i,ElemType x);void SeqListDelete(int i);void SeqListMerge();int GetLength(){return length;}int SeqListFind(ElemType x);int SeqListIsEmpty();void SeqListPrint();}Mylist1,Mylist2;//创建顺序表void SeqList::SeqListCreat(int n){ElemType x;cout<<"请输入数据元素:";for (int i=0;i<n;i++){cin>>x;list[i]=x;length++;}}//对顺序表进行排序void SeqList::SeqListSort(int i,ElemType x) {for(int k=0;k<length;k++){for(i=k+1;i<=length;i++){if(list[k]>list[i]){x=list[k];list[k]=list[i];list[i]=x;}}}}//在顺序表L中的第i个位置插入新元素x void SeqList::SeqListInset(int i,ElemType x) {int k;if(length>=MaxSize)cout<<"表已满,无法插入!"<<endl;else if(i<0||i>length)cout<<"参数i不合理!"<<endl;else{for (k=length;k>=i;k--){list[k]=list[k-1];}list[i-1]=x;length++;}}//删除第i个位置的数据元素void SeqList::SeqListDelete(int i){int k;if(!SeqListIsEmpty())cout<<"表已空,无法删除!"<<endl;else if(i<0||i>length)cout<<"参数i不合理!"<<endl;elsefor(k=i-1;k<length;k++)list[k]=list[k+1];length--;}//查找元素x在表中的位置int SeqList::SeqListFind(ElemType x) {int i=0;while(i<length&&list[i]!=x)i++;if(i>length)return -1;elsereturn i+1;}//判断顺序表是否为空int SeqList::SeqListIsEmpty(){if(length<=0)return 0;else return 1;}//将顺序表显示在屏幕上void SeqList::SeqListPrint(){if(!SeqListIsEmpty())cout<<"空表!"<<endl;elsefor(int i=0;i<length;i++)cout<<list[i]<<" ";cout<<endl;}int main(){SeqList Mylist1,Mylist2;int i,n,flag=1,select;ElemType x;cout<<"1. 建立顺序表\n";cout<<"2. 对顺序表进行排序\n";cout<<"3. 求x数值的位置\n";cout<<"4. 在第i个位置插入新元素x\n"; cout<<"5. 删除第i个位置上的数值\n"; cout<<"6. 将两个顺序表合并\n";cout<<"7. 退出\n";cout<<endl;while (flag){cout<<"请选择操作:";cin>>select;switch(select){case 1:cout<<"请输入顺序表1的长度:";cin>>n;Mylist1.SeqListCreat(n);cout<<"你所输入的顺序表1为:";Mylist1.SeqListPrint();cout<<"请输入顺序表2的长度:";cin>>n;Mylist2.SeqListCreat(n);cout<<"你所输入的顺序表2为:";break;case 2:cout<<"请选择所要排序的顺序表1或2:"; cin>>n;if(n==1){Mylist1.SeqListSort(i,x);cout<<"排序后的顺序表1为:";Mylist1.SeqListPrint();}else{Mylist2.SeqListSort(i,x);cout<<"排序后的顺序表2为:";Mylist2.SeqListPrint();}break;case 3:cout<<"请输入x的值:";cin>>x;i=Mylist1.SeqListFind(x);if(i!=-1) cout<<"x的位置为:"<<i<<endl;else cout<<"没有找到!";break;case 4:cout<<"请输入要插入的元素的位置和数值x:"; cin>>i>>x;cout<<"插入后的顺序表为:";Mylist1.SeqListPrint();break;case 5:cout<<"请输入要删除的元素的位置:";cin>>i;Mylist1.SeqListDelete(i);cout<<"删除后的顺序表为:";Mylist1.SeqListPrint();break;case 6:cout<<"合并后的顺序表为:\n";Mylist1.SeqListPrint();Mylist2.SeqListPrint();break;case 7:flag=0;break;}}}三运行结果为:四、上机环境和使用语言(计算机程序实现)Visual C++。

数据结构上机实验指导

数据结构上机实验指导

《数据结构》课程上机实验指导书实验一【实验名称】顺序表的基本算法【实验目的】创建一个顺序表,掌握线性表顺序存储的特点。

设计和验证顺序表的查找、插入、删除算法。

【实验要求】(1)从键盘读入一组整数,按输入顺序形成顺序表。

并将创建好的顺序表元素依次打印在屏幕上。

(2)设计一个带选择菜单的主函数,菜单中具备任意选择删除、插入、查找数据元素的功能。

(3)当选择删除功能时,从键盘读入欲删除的元素位置或元素值,按指定方式删除;当选择插入功能时,从键盘读入新元素值和被插入位置,在指定位置插入;当选择查找功能时,从键盘读入欲查找的元素值,返回其位置序号。

(4)每种操作结束后,都能在屏幕上打印出此时顺序表元素的遍历结果。

【实验步骤】1、实验前先写好算法。

2、上机编写程序。

3、编译。

4、调试。

例程:书上参考算法2-1,2-4,2-5,2-6,2-8!带菜单的主函数参考书上综合实例!注意:顺序表的结构体!typedef struct{datatype items[listsize];int length;}SpList;实验二【实验名称】单链表的基本算法【实验目的】创建一个单链表,掌握线性表链式存储的特点。

设计和验证链表的查找、插入、删除、求表长的算法。

【实验要求】(1)从键盘读入一组整数,按输入顺序形成单链表。

并将创建好的单链表元素依次打印在屏幕上。

(注意:选择头插法或者尾插法!)(2)设计一个带选择功能菜单的主函数,菜单中至少具备任意选择删除、插入、查找数据元素,和求单链表表长等几项功能。

(3)当选择删除功能时,从键盘读入欲删除的元素位置,按指定位置删除;当选择插入功能时,从键盘读入新元素值和被插入位置,在指定位置插入;当选择查找功能时,从键盘读入欲查找的元素值,返回其位置序号;当选择求表长功能时,返回该单链表表长的数值。

(4)每种操作结束后,都能在屏幕上打印出此时单链表元素的遍历结果。

【实验步骤】1、实验前先写好算法。

数据结构实验指导书(新版)

数据结构实验指导书(新版)

《数据结构与算法》实验指导书实验及学时数分配几点要求:一、上机前:认真预习相关实验内容,提前编写算法程序,上机时检查(未提前编写程序者,扣除平时成绩中实验相关分数)。

二、上机中:在Turbo C或VC6.0环境中,认真调试程序,记录调试过程中的问题、解决方法以及运行结果。

上机时签到;下机时验收签字。

三、下机后:按要求完成实验报告,并及时提交(实验后1周内)。

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

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

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

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

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

【实验步骤】一、用C语言编程实现建立一个顺序表,并在此表中插入一个元素和删除一个元素。

1、通过键盘读取元素建立线性表;(从键盘接受元素个数n以及n个整形数;按一定格式显示所建立的线性表)2、指定一个元素,在此元素之前插入一个新元素;(从键盘接受插入位置i,和要插入的元素值;实现插入;显示插入后的线性表)3、指定一个元素,删除此元素。

(从键盘接受删除元素位置i,实现删除;显示删除后的线性表)二、用C语言编程实现建立一个单链表,并在此表中插入一个元素和删除一个元素。

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

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

《数据结构》上机实验的目的和要求
通过上机实验加深对课程内容的理解,增加感性认识,提高软件设计、编写及调试程序的能力。

要求所编的程序能正确运行,并提交实验报告。

实验报告的基本要求为:
1、需求分析:陈述程序设计的任务,强调程序要做什么,明确规定:
(1)输入的形式和输出值的范围;
(2)输出的形式;
(3)程序所能达到的功能;
(4)测试数据:包括正确的输入输出结果和错误的输入及输出结果。

2、概要设计:说明用到的数据结构定义、主程序的流程及各程序模块之间的调用关系。

3、详细设计:提交带注释的源程序或者用伪代码写出每个操作所涉及的算法。

4、调试分析:
(1)调试过程中所遇到的问题及解决方法;
(2)算法的时空分析;
(3)经验与体会。

5、用户使用说明:说明如何使用你的程序,详细列出每一步操作步骤。

6、测试结果:列出对于给定的输入所产生的输出结果。

若有可能,测试随输入规模的
增长所用算法的实际运行时间的变化。

《 数据结构与算法》实验报告要求

《 数据结构与算法》实验报告要求

《数据结构与算法》实验报告要求《数据结构与算法》实验报告要求实验报告首先要求有一个清晰醒目的报告标题,例如:《数据结构课程设计实验一:xxxxxxxxxx》。

报告至少要求具备以下四部分内容:一、简介这一部分需简单介绍题目内容,即该实验到底要做什么。

如果涉及明确的算法,最好再简单介绍一下算法产生的背景。

基本要求:实验内容必须覆盖完备。

二、算法说明这一部分需详细描述解决问题所需要用到的算法和重要的数据结构,即该实验到底应该怎么做。

基本要求:所有处理问题中所用到的关键算法都要描述清楚,而不是仅描述主函数。

算法和数据结构用伪码和图示描述,千万不要只写源代码加注释。

这一部分的目的是让读者在短时间内对作者解决问题的整体思路有个清楚的了解,表达方式必须比源代码通俗易懂。

如果读者感觉还不如直接读源代码来得明白,这一部分就失去了意义。

三、测试结果这一部分需根据题目类型设计提供相应的测试方法和结果。

对于需要比较不同算法性能优劣的题目,应设计并填写一张性能比较表格,列出不同算法在同一指标下的性能表现。

但仅仅罗列出一堆数据是不够的,还应将数字转化为图象、曲线等,帮助读者更直观地理解测试结果。

对于需要利用某算法解决某问题的题目,应设计并填写一张测试用例表。

每个测试用例至少应包括下列内容: ? 测试输入:设计一组输入数据; ? 测试目的:设计该输入的目的在于测试程序在哪方面可能存在的漏洞; ? 正确输出:对应该输入,若程序正确,应该输出的内容; ? 实际输出:该数据输入后,实际测试得到的输出内容; ? 错误原因:如果实际输出与正确输出不符,需分析产生错误的可能原因; ? 当前状态:分为“通过”(实际输出与正确输出相符)、“已改正”(实际输出与正确输出不符,但现在已修改正确)、“待修改”(实际输出与正确输出不符,且尚未改正)三种状态。

四、分析与探讨这一部分应是整篇报告中最令读者感兴趣的部分,分为两块内容: ? 测试结果分析。

数据结构与算法实验报告

数据结构与算法实验报告

数据结构与算法实验报告数据结构与算法实验报告一、实验目的本实验旨在通过实践的方式,加深对数据结构与算法的理解与应用,并能够独立设计和实现常见的数据结构和算法。

二、实验要求1·设计并实现以下数据结构与算法:(按需列出具体数据结构与算法)2·进行性能测试,分析并总结测试结果。

3·撰写实验报告,完整记录实验过程与结果,并进行适当的分析与总结。

三、实验环境(列出实验所需环境,包括操作系统、编程语言及开发环境等)四、实验过程与方法4·1 数据结构设计与实现(首先介绍每个数据结构的功能与特点,然后给出设计思路和实现方法,包括数据结构的定义、操作方法和算法等)4·2 算法设计与实现(首先介绍每个算法的功能与特点,然后给出设计思路和实现方法,包括算法的定义、输入输出格式、算法流程图等)五、实验结果与分析5·1 数据结构性能测试结果(列出数据结构的测试用例及其输入输出,记录测试结果,包括运行时间、空间占用等方面的数据,并进行适当的分析与总结)5·2 算法性能测试结果(列出算法的测试用例及其输入输出,记录测试结果,包括运行时间、空间占用等方面的数据,并进行适当的分析与总结)六、实验总结6·1 实验成果(总结实验所达到的目标,列出已实现的数据结构和算法)6·2 实验心得(记录实验过程中的收获和体会,包括困难与解决方法、感悟和改进方向等)附件:1·实验源码(附上实验所使用的源代码文件,以供参考)2·实验数据(附上实验所用的测试数据文件或数据表格等)法律名词及注释:(列出文档中涉及的法律名词及其注释,以确保读者对相关法律法规的理解)。

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

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

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

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

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

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

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

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

教师评出检查成绩。

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

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

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

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

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

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

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

数据结构上机实验报告

数据结构上机实验报告

数据结构上机实验报告一、实验目的本次数据结构上机实验的主要目的是通过实际编程操作,深入理解和掌握常见的数据结构及其基本操作,提高解决实际问题的能力和编程技能。

具体目标包括:1、熟练掌握线性表、栈、队列、树、图等数据结构的基本概念和存储方式。

2、学会运用数据结构的相关算法进行数据的插入、删除、查找、排序等操作。

3、培养分析问题、设计算法、编写代码和调试程序的综合能力。

4、增强对数据结构在实际应用中的认识,提高解决复杂问题的思维能力。

二、实验环境1、操作系统:Windows 102、编程环境:Visual Studio 20193、编程语言:C++三、实验内容本次实验共包括以下几个部分:1、线性表的操作实现顺序表和链表的创建、插入、删除、查找和遍历操作。

比较顺序表和链表在不同操作下的性能差异。

2、栈和队列的应用利用栈实现表达式求值。

用队列模拟银行排队系统。

3、树的遍历实现二叉树的先序、中序和后序遍历算法,并输出遍历结果。

构建哈夫曼树,并进行编码和解码操作。

4、图的基本操作用邻接矩阵和邻接表存储图,并实现图的深度优先搜索和广度优先搜索算法。

四、实验步骤及结果1、线性表的操作顺序表的实现:```cppinclude <iostream>using namespace std;define MAXSIZE 100 //顺序表的最大长度class SeqList {private:int dataMAXSIZE; //存储顺序表元素的数组int length; //顺序表的当前长度public:SeqList(){//构造函数,初始化顺序表length = 0;}//插入元素bool insert(int pos, int element) {if (pos < 0 || pos > length || length == MAXSIZE) {return false;}for (int i = length; i > pos; i) {datai = datai 1;}datapos = element;length++;return true;}//删除元素bool remove(int pos) {if (pos < 0 || pos >= length) {return false;}for (int i = pos; i < length 1; i++){datai = datai + 1;}length;return true;}//查找元素int search(int element) {for (int i = 0; i < length; i++){if (datai == element) {return i;}}return -1;}//遍历输出顺序表void traverse(){for (int i = 0; i < length; i++){cout << datai <<"";}cout << endl;}};int main(){SeqList list;listinsert(0, 10);listinsert(1, 20);listinsert(2, 30);listtraverse();listremove(1);listtraverse();int position = listsearch(30);if (position!=-1) {cout <<"元素 30 在位置"<< position << endl;} else {cout <<"未找到元素 30" << endl;}return 0;}```链表的实现:```cppinclude <iostream>using namespace std;class Node {public:int data;Node next;Node(int element) {data = element;next = NULL;}};class LinkedList {private:Node head;public:LinkedList(){head = NULL;}//插入元素void insert(int element) {Node newNode = new Node(element);if (head == NULL) {head = newNode;} else {Node current = head;while (current>next!= NULL) {current = current>next;}current>next = newNode;}}//删除元素void remove(int element) {if (head == NULL) {return;}if (head>data == element) {Node temp = head;head = head>next;delete temp;return;}Node current = head;Node prev = NULL;while (current!= NULL && current>data!= element) {prev = current;current = current>next;}if (current!= NULL) {prev>next = current>next;delete current;}}//查找元素bool search(int element) {Node current = head;while (current!= NULL) {if (current>data == element) {return true;}current = current>next;}return false;}//遍历输出链表void traverse(){Node current = head;while (current!= NULL) {cout << current>data <<"";current = current>next;}cout << endl;}};int main(){LinkedList list;listinsert(10);listinsert(20);listinsert(30);listtraverse();listremove(20);listtraverse();if (listsearch(30)){cout <<"找到元素 30" << endl;} else {cout <<"未找到元素 30" << endl;}return 0;}```性能比较:在插入和删除操作中,顺序表在表头或中间位置操作时需要移动大量元素,时间复杂度较高;而链表只需要修改指针,时间复杂度较低。

《数据结构与算法》实验要求与指导

《数据结构与算法》实验要求与指导

《数据结构与算法》实验要求与指导(一)远程教育辅导教师基本条件(要求)1. 熟练掌握C语言及其调试开发环境;2. 具有用C语言编写调试中等规模以上(数百行源码)程序的经验;3. 掌握《数据结构与算法》课程有关的知识, 具有较好的算法设计和分析的能力;4. 有一定的教学经验。

(二)算法实验要求综述根据目前远程教育计算机专业的学生的实际情况和他们的 C语言基础,严格按照本科教学要求进行算法实验上机并完成相应的实验报告, 对多数学生是有一定困难的. 为适应不同基础的学生循序渐进地学习,我们把实验要求分成四个层次, 希望学生不断往更高层次要求自己, 最终能达到本课程的实验基本要求.这四个层次的要求是:一. 以熟练使用c语言的开发环境(如TC2.0或VC6.0)为主,进行简单问题的程序设计和调试分析二. 编写主程序调用调试教材中描述并在课堂中详细讲解过的算法三. 完成习题中的算法设计题并书写实验报告四. 独立完成一个小的应用系统并规范书写实验报告,以进一步提高算法描述和算法分析的能力以上一至三层次作为本课程的基本实验要求,第四层次作为有能力的学生的提高要求。

实验辅导教师也可以根据当地学生的具体情况, 本着能提高学生两个能力(C语言的编程和调试能力, 算法设计和分析能力)的目的, 循序渐进地引导学生掌握算法和程序的上机实验, 并参考《题集》的实验报告范例书写实验报告。

按教学计划,本课程实验课时为15学时,安排6-7次实验。

由于课时数有限,要求学生在实验前作好充分准备,否则很难在两个学时内完成相关的上机与调试。

上机前的准备工作主要有两项:一是仔细阅读理解书中的相关算法,需要写解题算法的还要在纸上写好算法;二是准备好要调试算法的数据,并写好调用算法的主程序。

实验1至实验6都分为A、B两个实验。

A实验对应第二层次的能力培养训练,B实验对应第三层次的能力培养训练。

下面就每一层次的要求作如下说明。

一. 以熟练使用c语言的开发环境(如TC2.0或VC6.0)为主,进行一般问题的程序设计和调试分析该能力实际上是预修课C语言的要求,由于有相当部分学生C语言掌握不是很好, 影响了数据结构算法的描述和理解. 所以开始应该注意弥补C语言的能力. 根据经验, C语言中函数定义与调用(形参和实参的对应等), 指针, 类型定义与使用、结构的定义和使用、动态内存的申请等难点却是数据结构算法描述的重点, C语言的这些障碍严重影响了学生对数据结构与算法的理解,也影响了学习数据结构的兴趣. 所以实验指导教师在鼓励学生主动补习C语言知识的同时, 有意识安排一些符合学生基础的程序设计练习作为本课程实验的前导补充. 与本课程的相公的算法题目可以推后几周上机.本实验教学计划的预备实验(即实验0)是为完成该任务而设计的。

数据结构与算法实训内容及要求

数据结构与算法实训内容及要求

数据结构与算法实训内容及要求Ⅰ基础题部分实训内容及要求一、顺序表操作1、显示2、插入3、查找(显示比较次数)4、删除(显示移动次数)5、排序(普通、快速,显示比较次数、移动次数)6、折半查找(显示比较次数)7、编程实现一个顺序表的就地逆置,即利用原表的存储空间将顺序表逆置。

提高题:8*、要求以较高的效率实现删除顺序表中元素值在x到y(x和y自定)之间的所有元素。

[解题思路] 在顺序表中设置两个初值为0的下标变量i和j,其中,i为比较元素的下标,j 为赋值元素的下标。

依次取顺序表中下标为i的元素与x和y比较,假若是x到y之外的元素,则赋值给下标为j的元素。

这种算法比删除一个元素后立即移动其后面的元素的效率高得多。

9*、编程实现将两个有序的顺序表进行合并,要求同样的数据元素只出现一次。

[解题思路] 由于两个顺序表中的元素呈有序排列,在进行合并的时候,依次比较,哪个顺序表的元素值小,就先将这个元素复制到新的顺序表中,若两个元素相等,则复制一个即可,这样一直到其中的一个顺序表结束,然后将剩余的顺序表复制到新的顺序表中即可。

10*、有序插入(显示比较次数、移动次数),屏幕提示后,从键盘输入一个元素值,在经过排序的线性表中插入这个元素;屏幕显示比较次数和移动次数,应有溢出判断和报告。

顺序表操作菜单如下图所示:二、单链表操作1、创建2、显示3、查找(显示比较次数)4、插入5、删除(显示比较次数)6、将链接存储线性表逆置,即最后一个结点变成第1个结点,原来倒数第2个结点变成第2个结点,如此等等。

7、生成有序的两个单链表A和B(链表的数据和个数自定),其首结点指针分别为a 和b,要求将两个单链表合并为一个有序的单链表C,其首结点指针为c,并且合并后的单链表的数据不重复。

8、将一个首结点指针为a的单链表A分解成两个单链表A和B,其首结点指针分别为a和b,使得链表A中含有原链表A中序号为奇数的元素,而链表B中含有原链表A中序号为偶数的元素,且保持原来的相对顺序。

《数据结构》实验目的和要求

《数据结构》实验目的和要求
Q- >r=0; else
Q- >r++; if(Q- >r==Q->f)
pr intf("Overflow!\n "); } front(queue *Q){
if(Q- >r==Q->f) pr intf("Underflow!\ n");
else re turn(Q->q[Q->f]);
} void deq(queue *Q){
int q[20]; int f,r; }queue; int nodelist[20][20]; queue Q; int z[20]; int a,b,n,i,j,x,y;
int finished; void enq(queue *Q,int x){
Q->q[ Q->r]=x; if(Q- >r==19)
实验包括的步骤
1.简要描述题目要求,对问题的描述应避开算法及所涉及的数据类型,只是对所需完 成的任务做出明确的 陈述,例如输 入数据的类型、 值的范围以及 输入的形式, 输出数据的 类型、值的范围以及输出的形式。
2.选定数据结构,写出算法,根据自顶向下发展算法的方法,首先描述算法的基本思 想,然后进行算法细化,再对所设计的算法的时间复杂性和空间复杂性进行简单分析。
} if(!finished )
j++; } } if (!finished) printf("There is no path.");
} } void writepath(int a,int b){
i=b;
while (i!=a){ printf("%d <- ",i); i= z[i];

数据结构与算法-东北林业大学 实验和上机指导

数据结构与算法-东北林业大学 实验和上机指导

• 四、
调试分析 • 1. 调试中遇到的问题及对问题的解决方法;
• 2. 算法的时间复杂度和空间复杂度。
• 五、
使用说明及测试结果
源程序(带注释)
ห้องสมุดไป่ตู้
《数据结构实验》教学大纲
• 一、总则 • ⒈本课程的教学目的和要求 • 数据结构是信息与计算科学专业中一门重要的专业基础
课程。当用计算机来解决实际问题时,就要涉及到数据的表 示及数据的处理,而数据表示及数据处理正是数据结构课程 的主要研究对象,通过这两方面内容的学习,为后续课程, 特别是软件方面的课程打下了厚实的知识基础,同时也提供 了必要的技能训练。因此,数据结构课程在计算机应用专业 中具有举足轻重的作用。 • 本课程的任务是:通过实践,学生对常用数据结构的基 本概念及其不同的实现方法的理论得到进一步的掌握,并对 在不同存储结构上实现不同的运算方式和技巧有所体会。
• 实验报告规范: 实验题目 • 班级 姓名 学号 • 一、 需求分析
• 1. 程序的功能; • 2. 输入输出的要求; • 3. 测试数据。
日期
• 二、
概要设计 • 1. 本程序所用的抽象数据类型的定义;
• 2. 主程序的流程及各程序模块之间的层次关系。
• 三、
详细设计 • 1. 采用c语言定义相关的数据类型; • 2. 写出各模块的伪码算法; • 3. 画出函数的调用关系图。
• 使得系统结构清晰、合理、简单和易于调试,抽象数 据类型的实现尽可能做到数据的封装,基本操作的规 格说明尽可能的明确和具体。作为逻辑设计的结果。 应写出每个抽象数据类型的定义(包括数据结构的描 述和每个基本操作的规格说明),各个主要模块的算 法,并画出模块之间的调用关系图。详细设计的结果 是对数据结构和基本操作的规格说明做出进一步的求 精,写出数据存储结构的类型定义,按照算法书写规 范用类C语言写出函数形式的算法框架。 • 2.编码实现和静态检查 • 3.上机准备和上机调试 • 4.总结和整理实习报告 • • 附:实验报告规范

《数据结构与算法》实验指导书.

《数据结构与算法》实验指导书.

《数据结构与算法》实验指导书.《数据结构与算法》实验指导书实验1 顺序表一、实验目的(1)掌握顺序表的逻辑结构、存储结构及描述方式。

(2)掌握顺序表的定位、插入、删除等操作。

二、实验要求(1)调试程序要记录调试过程中出现的问题及解决办法;(2)给出每个问题的算法或画出流程图;(3)编写程序要规范、正确,上机调试过程和结果要有记录,并注意调试程序集成环境的掌握及应用,不断积累编程及调试经验;(4)做完实验后给出本实验的实验报告。

三、实验设备、环境奔腾以上计算机,装有Turbo C 2.0或Visual C++软件四、实验步骤及内容实验步骤:1.根据题目,编写程序。

2.上机调试通过。

3.按照金陵科技学院实验报告格式,撰写各实验报告。

实验内容:(1)编写一个函数print_all_data,该函数的作用是逐个输出顺序表中所有数据元素的值。

编写主函数,从键盘输入顺序表,调用函数print_all_data,测试结果。

(2)编写顺序表定位操作函数locata,该函数的作用是在顺序表中查找是否存在数据元素的值与变量x的值相等。

如果存在满足条件的数据元素,则返回顺序表中和x值相等的第1个数据元素在表中的下标;如果不存在,则返回-1。

编写主函数,从键盘输入顺序表,以及变量x的值,调用函数locate,测试结果。

(3)编写一个函数insert,该函数的作用是在递增有序的顺序表中插入一个新结点x,要求保持顺序表的有序性,输出插入前后顺序表状态。

编写主函数,从键盘输入顺序表以及变量x的值,调用函数insert,测试结果。

(4)编写一个函数delete,该函数的作用是删除顺序表中所有等于X的数据元素。

若顺序表中没有满足条件的数据元素,则输出合适的信息。

若有满足条件的数据元素,则输出删除前后顺序表状态。

编写主函数,从键盘输入顺序表以及变量x的值,调用函数delete,测试结果。

五、讨论、思考题1、如何在排列有序的顺序表中插入新元素,而保证顺序表的有序性?2、如何在排列有序的顺序表中删除某元素,而保证顺序表的有序性?实验2 单链表一、实验目的(1)掌握单链表的逻辑结构、存储结构及描述方式。

数据结构专题实验

数据结构专题实验

上机实验要求及规范《数据结构》课程具有比较强的理论性,同时也具有较强的可应用性和实践性,因此上机实验是一个重要的教学环节。

一般情况下学生能够重视实验环节,对于编写程序上机练习具有一定的积极性,但是容易忽略实验的总结,忽略实验报告的撰写。

对于一名大学生必须严格训练分析总结能力、书面表达能力。

需要逐步培养书写科学实验报告以及科技论文的能力。

拿到一个题目,一般不要急于编程,而是应该按照面向过程的程序设计思路(关于面向对象的训练将在其它后继课程中进行),首先理解问题,明确给定的条件和要求解决的问题,然后按照自顶向下,逐步求精,分而治之的策略,逐一地解决子问题。

具体步骤如下:1.问题分析与系统结构设计充分地分析和理解问题本身,弄清要求做什么(而不是怎么做),限制条件是什么。

按照以数据结构为中心的原则划分模块,搞清数据的逻辑结构(是线性表还是树、图?),确定数据的存储结构(是顺序结构还是链表结构?),然后设计有关操作的函数。

在每个函数模块中,要综合考虑系统功能,使系统结构清晰、合理、简单和易于调试。

最后写出每个模块的算法头和规格说明,列出模块之间的调用关系(可以用图表示),便完成了系统结构设计。

2.详细设计和编码详细设计是对函数(模块)的进一步求精,用伪高级语言(如类C语言)或自然语言写出算法框架,这时不必确定很多结构和变量。

编码,即程序设计,是对详细设计结果的进一步求精,即用某种高级语言(如C/C++语言)表达出来。

尽量多设一些注释语句,清晰易懂。

尽量临时增加一些输出语句,便于差错矫正,在程序成功后再删去它们。

3.上机准备熟悉高级语言用法,如C语言。

熟悉机器(即操作系统),基本的常用命令。

静态检查主要有两条路径,一是用一组测试数据手工执行程序(或分模块进行);二是通过阅读或给别人讲解自己的程序而深入全面地理解程序逻辑,在这个过程中再加入一些注释和断言。

如果程序中逻辑概念清楚,后者将比前者有效。

4.上机调试程序调试最好分块进行,自底向上,即先调试底层函数,必要时可以另写一个调用驱动程序,表面上的麻烦工作可以大大降低调试时所面临的复杂性,提高工作效率。

数据结构上机实验指导书

数据结构上机实验指导书

计算机系第一部分算法与数据结构课程实验概述一.实验目的《算法与数据结构》是计算机专业的主干课程和必修课程之一,其目的是让大家学习、分析和研究数据对象特征,掌握数据组织方法和计算机的表示方法,以便选择合适的数据逻辑结构和存储结构,设计相应的运算操作,把现实世界中的问题转化为计算机内部的表示与处理的方法,要求掌握算法的时间、空间复杂度分析基本技术,培养良好的程序设计风格,掌握进行复杂程序设计的技能。

在计算机科学领域,尤其是在系统软件和应用软件的设计和应用中要用到各种数据结构,因此,掌握数据结构对提高软件设计和程序编制水平有很大的帮助。

二.实验要求2.1实验步骤设计步骤的规范不但可以培养学生科学的工作方法和作风,而且还能有效地减少错误,提高工作效率。

因此必须严格执行良好的实验步骤规范(包括上机操作规范)。

本课程实验的基本步骤是:2.1.1问题分析充分地分析和理解问题本身,明确问题要求做什么。

对问题的描述应避开算法和所涉及的数据类型,而是对所需完成的任务作出明确的回答。

例如;输入、输出数据的类型、值的范围以及形式等。

同时为调试程序准备好测试数据,包含合法的输入数据和非法形式输入的数据。

2.1.2设计和编码设计即是对问题描述中涉及的操作对象定义相应的数据类型,定义主程序模块和各抽象数据类型;定义相应的存储结构并写出各过程和函数的伪码算法。

在这个过程中,要综合考虑系统功能,使得系统结构清晰、合理、简单和易于调试。

编码即把详细设计的结果进一步求精为程序设计语言程序,写出源程序。

对程序中的疑问应作出记号,以便上机时注意解决。

每个明确的功能模块程序一般不超过60行,程序的每一行不得超过60个字符,否则要进一步划分。

2.1.3上机前程序静态检查上机前程序静态检查可有效提高调试效率,减少上机调试程序时的无谓错误。

静态检查主要有两种途径:用一组测试数据手工执行程序;通过阅读或给别人讲解自己的程序而深入全面地理解程序逻辑。

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

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

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

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

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

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

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

教师评出检查成绩。

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

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

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

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

实验报告按照首页附件中实验报告模版书写。

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

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

具体实验题目与要求:(任课教师根据实验大纲自己指定)
每位同学可从下面题目中选择1-2题实现:
1.一元稀疏多项式简单的计算器
1)问题描述:用线性表表示一元稀疏多项式,设计一个一元多项式运算器
2)要求: (1)采用单链表存储结构一元稀疏多项式
(2)输入并建立多项式
(3)输出多项式
(4)实现多项式加、减运算
2.单链表基本操作练习
1)问题描述:在主程序中提供下列菜单:
1…建立链表
2…连接链表
3…输出链表
0…结束
2)实验要求:算法中包含下列过程,分别完成相应的功能:
CreateLinklist(): 从键盘输入数据,创建单链表
ContLinklist():将前面建立的两个单链表首尾相连
OutputLinklist():输出显示单链表
3.约瑟夫环问题
1)问题描述:有编号为1, 2…n 的n 个人按顺时针方向围坐一圈,每人持有一个正整数密码。

开始给定一个正整数m,从第一个人按顺时针方向自1开始报数,报到m者出列,不再参加报数,这时将出列者的密码作为m,从出列者顺时针方向的下一人开始重新自1开始报数。

如此下去,直到所有人都出列。

试设计算法,输出出列者的序列。

2)要求: 采用顺序和链式两种存储结构实现
实验报告格式及要求:按附件中实验报告模版书写。

(具体要求见四)
实验二栈与队列应用
实验时间:2016年3月28日1-4节(地点:7-215)
实验目的:理解栈和队列的逻辑特点;掌握栈和队列基本操作的实现,并能达到在实际问题背景下的灵活运用栈或队列结构解决问题的程度。

具体实验题目:(任课教师根据实验大纲自己指定)
每位同学完成下面2个题目:
1.十进制数与N进制数据的转换
1)问题描述:将从键盘输入的十进制数转换为N(如二进制、八进制、十六进制)进制数据。

2)要求: 利用顺序栈实现数制转换问题
2.算术表达式求值算法
1)问题描述:从键盘输入一个算术表达式并输出它的结果
2)要求:算术表达式可包含加、减、乘、除、十进制整数和小括号,利用栈实现
实验报告格式及要求:按附件中实验报告模版书写。

(具体要求见四)
实验三二叉树操作
实验时间:2016年4月11日1-4节(地点:7-215)
实验目的:理解二叉树的逻辑特点和二叉树的性质;掌握二叉树的二叉链表存储结构,掌握二叉树的创建算法、遍历算法的递归与非递归实现。

具体实验题目:(任课教师根据实验大纲自己指定)
第1题为必做题,第2题为选做题目:
1.每位同学按下述要求实现相应算法:以二叉链表为存储结构,实现二叉树的创建、遍历算法
1)问题描述:在主程序中提供下列菜单:
1…建立树
2…前序遍历树
3…中序(非递归)遍历树
4…后序遍历树
0…结束
2)实验要求:
①定义下列过程:
CreateTree(): 按从键盘输入的前序序列,创建树
PreOrderTree():前序遍历树(递归)
InOrderTree():中序(非递归)遍历树
LaOrderTree(): 后序遍历树(递归)
②每位同学在实验过程中要单步运行程序,跟踪二叉树的创建过程与前序遍历的递归过程。

2. 树的转换:我们都知道用“孩子兄弟”表示法可以将一棵一般的树转换为二叉树。

请设计算法将一棵树用这种方法转换为二叉树,并输出转换前和转换后树的前序遍历序列。

实验报告格式及要求:按附件中实验报告模版书写。

(具体要求见四)
实验四图的深度优先与广度优先遍历
实验时间:2016年5月20日,10:00-13:00(地点:7-215)
实验目的:理解图的逻辑特点;掌握理解图的两种主要存储结构(邻接矩阵和邻接表),掌握图的构造、深度优先遍历、广度优先遍历算法。

具体实验题目:(任课教师根据实验大纲自己指定)
第1题为必做题,第2题为选做题目:
1. 每位同学按下述要求实现相应算法:根据从键盘输入的数据创建图(图的存储结构可采用邻接矩阵或邻接表),并对图进行深度优先搜索和广度优先搜索
1)问题描述:在主程序中提供下列菜单:
1…图的建立
2…深度优先遍历图
3…广度优先遍历图
0…结束
2)实验要求:图的存储可采用邻接表或邻接矩阵;定义下列过程:
CreateGraph(): 按从键盘的数据建立图
DFSGrahp():深度优先遍历图
BFSGrahp():广度优先遍历图
2. 拓扑排序:给出一个图的结构,输出其拓扑排序序列(顶点序列用空格隔开),要求在同等条件下,编号小的顶点在前。

实验报告格式及要求:按附件中实验报告模版书写。

(具体要求见四)
实验五查找算法应用
实验时间:2016年6月6日1-4节(地点:7-215)
实验目的:理解二叉排序树、AVL树的查找、插入、删除、建立算法的思想及程序实现;掌握散列存储结构的思想,能选择合适散列函数,实现不同冲突处理方法的散列表的查找、建立。

散列表等查找算法解决实际问题。

具体实验题目:(任课教师根据实验大纲自己指定)
每位同学可从下面题目中选择1-2题实现:
1.哈希表查找
1)问题描述:针对某个集体的“人名”构造哈希表,解决按“人名”进行查找的索引结构。

2)实验要求:要求表的平均查找长度不超过R(R可以从键盘输入确定),完成相应的建表和查表程序。

2.构造二叉排序树,并进行中序遍历
1)问题描述:从键盘读入一串整数构造一棵二叉排序树,并对得到的二叉排序述进行中序遍历,得到有序序列。

2)实验要求:该二叉排序树以二叉链表存储
3. 拼写检查
1)问题描述:现在有一些英语单词需要做拼写检查,你的工具是一本词典。

需要检查的单词,有的是词典中的单词,有的与词典中的单词相似,你的任务是发现这两种情况。

单词A与单词B相似的情况有三种:
①删除单词A的一个字母后得到单词B;
②用任意一个字母替换单词A的一个字母后得到单词B;
③在单词A的任意位置增加一个字母后得到单词B。

2)实验要求:发现词典中与给定单词相同或相似的单词。

实验报告格式及要求:按附件中实验报告模版书写。

(具体要求见四)。

相关文档
最新文档