数据结构实验指导书-20100306

合集下载

数据结构实验指导书

数据结构实验指导书

《数据结构》实验指导书实验一、顺序表实验目的:熟悉顺序表的逻辑特性、存储表示方法和顺序表的基本操作。

实验要求:了解并熟悉顺序表的逻辑特性、存储表示方法和顺序表的基本操作的实现和应用。

实验内容:编写程序实现下列的要求:(1) 设数据元素为整数,实现这样的线性表的顺序存储表示。

(2) 键盘输入10个数据元素,利用顺序表的基本操作,建立该表。

(3) 利用顺序表的基本操作,找出表中的最大的和最小的数据元素(用于比较的数据元素为整数)。

(4) * 若数据元素为学生成绩(含姓名、成绩等字段),重新编程,实现上面的要求。

要求尽可能少地修改前面的程序来得到新程序。

(这里用于比较的字段为分数)练习及思考题:(1)顺序表的操作上有什么特点?(2)不固定数据元素的个数,而通过特殊数据来标记输入数据的结束,实现这样的输入操作。

实验二、链表实验目的:熟悉链式表的逻辑特性、存储表示方法的特点和链式表的基本操作。

实验要求:了解并熟悉链式表的逻辑特性、存储表示方法和链式表的基本操作的实现和应用。

实验内容:编写程序实现下列的要求:(1) 设学生成绩表中的数据元素为学生成绩(含姓名、成绩字段),实现这样的线性表的链式存储表示。

(2) 键盘输入若干个数据元素(用特殊数据来标记输入数据的结束),利用链表的基本操作(前插或后插算法),建立学生成绩单链表。

(3) 键盘输入关键字值x,打印出表中所有关键字值<=x的结点数据。

(用于比较的关键字字段为分数)。

(4) 输入关键字值x,删除表中所有关键字值<=x的结点。

(用于比较的关键字字段为分数)。

练习及思考题:(1)不同类型的数据元素所对应的链式表在类型定义和操作实现上有什么异同?(2)有头结点的链式表,有什么特点?实验三、栈的应用实验目的:熟悉栈的逻辑特性、存储表示方法和栈的基本操作。

实验要求:了解并熟悉栈的逻辑特性、顺序和链式存储表示方法和栈的基本操作的实现和应用。

实验内容:(1) 判断一个表达式中的括号(仅有一种括号,小、中或大括号)是否配对。

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

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

《数据结构实验》实验指导书及答案信电工程学院计算机科学和技术教研室编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.熟练运用数组进行程序设计,掌握数组名和指针作为函数参数。

2010数据结构实验指导书

2010数据结构实验指导书

《数据结构》实验指导书齐晓轩编沈阳大学信息工程学院目录实验一:C语言运行环境、算法设计 1 实验二:顺序表的基本操作 3 实验三:线性链表的基本操作 5 实验四:顺序栈的基本操作 6 实验五:队列的基本操作7 实验六:串的基本操作8 实验七:数组和矩阵11 实验八:二叉树的基本操作12 实验九:图13 实验十:查找14 实验十一:排序15课程编号:1241331 课程类别:基础必修课适用层次:本科适用专业:计算机科学与技术计算机科学与技术(电子商务)课程总学时:80 适用学期:第4学期实验学时:30 开设实验项目数:11撰写人:齐晓轩审核人:刘天惠教学院长:范立南实验一:C语言运行环境、算法设计一、实验目的与要求1.熟悉TC环境的组成及使用方法。

2.了解C语言程序从编辑、编译、连接到运行并得到运行结果的过程。

3.学习把算法改成C程序的方法。

二、实验类型验证型三、实验原理及说明算法是指为了完成某一特定功能的指令序列,它阐述程序设计的总体思路。

四、实验仪器安装C语言环境(TC或VC++)的计算机若干台五、实验内容和步骤1.在开始实验之前,先建立自己的工作目录,可用自己的班级加学号或姓名命名。

2.熟悉VC环境的组成及使用。

3.了解算法设计。

算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。

编写自大到小依次输出顺序读入的三个数X、Y和Z的值的程序,并在TC或VC++环境下调试通过,最后写出程序的运行结果。

要求:包括主函数,排序函数和输出函数三部分。

在主程序中任意输入三个数,调用排序函数进行排序,在输出函数中输出排序结果。

六、注意事项注意算法在C语言编程环境中无法直接运行,需要改成C程序才能正确执行。

七、预习与思考题1.程序和算法的区别。

实验二:顺序表的基本操作一、实验目的与要求1.理解和掌握顺序表的结构类型定义方法。

2.掌握建立顺序表的基本方法。

3.掌握显示顺序表元素的基本方法。

数据结构课程实验指导书

数据结构课程实验指导书

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

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

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

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

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

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

二、实验前的准备工作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.单击“保存”按钮保存源程序。

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

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

数据结构实验指导书淮阴工学院计算机工程学院二O一一年八月目录实验1 线性表及其应用 (1)实验2 栈和队列及其应用 (5)实验3 二叉树及其应用 (10)实验4 图及其应用 (13)实验5 查找 (14)实验6 排序 (16)实验1 线性表及其应用实验目的1.加深对线性表的结构特性的理解;2.熟练掌握单链表类的描述方法及其C++实现;3.掌握线性表的链式存储结构的应用方法;4.从时间和空间的角度对操作算法进行分析;5.加强程序的设计能力和调试能力。

实验学时:建议2~4学时实验内容内容1:制作体育彩票(10选7)的选号器类。

【说明】(1)体育彩票(10选7)的7个号可以重复;(2)建议选号器类从单链表类继承。

用首尾相连的链式结构,这样可以更逼真地模拟“摇奖”过程;而每个号的“摇动”次数可用随机数来确定。

(3)怎样产生随机数?可以利用C++语言中的种子函数srand( )和产生伪随机数函数rand( )来实现。

(include<STDLIB.H>)a)首先,给srand(m )提供一个“种子”m,它的取值范围是从0~65535。

b)然后,调用rand( ),是伪随机数,它会根据提供给srand( )的“种子”值返回一个随机数(在0~32767之间)。

c)根据需要多次调用rand( ),从而不断地得到新的随机数。

d)无论何时,你都可以给srand( )提供一个新的“种子”,从而进一步“随机化”rand( )的输出结果。

例如,取m=17,则执行了srand(17)之后,再执行rand( )函数,将得到输出值94;第二次调用rand( ),会得到26,……反复调用rand( )就能产生一系列的随机数。

注意:若m不变,则rand( )的输出系列也不变,总是94,26,602,…等等。

所以,建议摇号的“种子”选当前日期或时间,以保证每天的摇号值都不相同。

【选做内容】实现摇奖和对奖操作。

内容2:约瑟夫(Joseph)环问题【问题描述】约瑟夫问题的一种描述是:编号为1,2,…,n的n个人按顺时针方向围坐一圈,从1起报到k则出圈,下一个人再从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.了解单链表的结构特点及有关概念,掌握单链表建立、插入、删除的基本操作算法。

[实验内容]1.顺序表的实践。

1)建立4个元素的顺序表list[]={2,3,4,5},实现顺序表建立的基本操作。

2)在list[]={2,3,4,5}的元素4和5之间插入一个元素9,实现顺序表插入的基本操作。

3)在list[]={2,3,4,9,5}中删除指定位置(i=3)上的元素9,实现顺序表的删除的基本操作。

2.单链表的实践。

1)建立一个包括头结点和3个结点的(4,2,1)的单链表,实现单链表建立的基本操作。

2)在已建好的单链表中的指定位置(x=2)插入一个结点3,实现单链表插入的基本操作。

3)在一个包括头结点和4个结点的(4,2,3,1)的单链表的指定位置删除一个结点,实现单链表删除的基本操作。

[实验要点及说明]线性表(linear list)是n(n≥0)个数据元素a1,a2,…a n组成的有限序列。

其中n 称为数据元素的个数或线性表的长度,当n=0时称为空表,n>0时称为非空表。

通常将非空的线性表记为(a1,a2,…,a n),其中的数据元素a i(1≤i≤n)是一个抽象的符号,a i是第i个数据元素,称i为数据元素a i在线性表中的位置。

其具体含义在不同情况下是不同的,即它的数据类型可以根据具体情况而定,本书中,我们将它的类型设定为elemtype,表示某一种具体的已知数据类型。

顺序表也称为线性表的顺序存储结构。

其存储方式为:在内存中用一组地址连续的存储单元依次存储线性表的数据元素,但该连续存储空间的大小要大于或等于顺序表的长度。

一般让线性表中第一个元素存放在连续存储空间第一个位置,第二个元素紧跟着第一个之后,其余依此类推。

可定义顺序表如下:#define maxnumelemtype list[maxnum];int num=-1;线性表的链式存贮结构,也称为链表。

数据结构实验指导书

数据结构实验指导书

数据结构实验指导书院别专业班级姓名计算机学院编实验一线性表的顺序存储实验一、实验目的及要求1、掌握在TC环境下调试顺序表的基本方法2、掌握顺序表的基本操作,插入、删除、查找、以及有序顺序表的合并等算法的实现。

二、实验学时2学时三、实验任务1、生成一个顺序表并动态地删除任意元素和在任意位置插入元素。

2、将两个有序表合并成一个有序表。

四、实验重点、难点1、在顺序表中移动元素。

2、在顺序表中找到正确的插入位置。

五、操作要点(一)顺序表基本操作的实现[问题描述] 当我们要在顺序表的第i个位置上插入一个元素时,必须先将顺序表中第i个元素之后的所有元素依次后移一个位置,以便腾空一个位置,再把新元素插入到该位置。

若是欲删除第i个元素时,也必须把第i个元素之后的所有元素前移一个位置。

[基本要求] 要求生成顺序表时,可以键盘上读取元素,用顺序存储结构实现存储。

[实现提示] 要实现基本操作,可用实现的基本操作,也可设计简单的算法实现。

[程序实现]#include <stdio.h>#include <conio.h>typedef int DataType ;# define maxnum 20typedef struct{int data[maxnum];int length;}SeqList;/*插入函数*/int insert(SeqList *L , int i , DataType x)/* 将新结点x插入到顺序表L第i个位置 */{ int j ;if( i<0 || i>(*L).length +1){ printf(" \n i 值不合法 ! ");return 0;}if((* L).length >=maxnum-1){ printf(" \n 表满不能插入!");return 0;}for(j=(*L).length;j>=i;j--) (*L).data[j+1]=(*L).data[j];(*L).data[i] = x;(*L).length++;return 1;}/*删除函数*/int delete( SeqList *L ,int i)/*从顺序L中删除第i个结点*/{ int j ;if( i<0|| i>(*L).length ){ printf(" \n 删除位置错误 ! ") ;return 0;}for(j=i+1;j<=(*L).length;j++)(*L).data[j-1] =(*L).data[j];(*L).length--;return 1;}/*生成顺序表*/void creatlist(SeqList * L){ int n , i , j ;printf("请输入顺序表 L 的数据个数:\n") ;scanf("%d" , &n) ;for(i=0 ; i<n ; i++){ printf("data[%d] =" , i) ;scanf("%d",&((*L).data[i]));}(*L).length=n-1;printf("\n") ;}/*creatlist *//*输出顺序表 L*/printout(SeqList * L){ int i ;for (i=0 ; i<=(* L).length ; i++){ printf(" data[%d]=", i) ;printf("%d", (*L).data[i]);}/*printout */printf("\n");}main(){ SeqList *L ;char cmd ;int i , t , x;clrscr() ;creatlist(L);do{printf("\ni , I ----- 插入\n") ;printf("d , D ----- 删除\n") ;printf("q , Q ----- 退出\n") ;do{cmd=getchar() ;}while((cmd!='i')&&(cmd!='I')&&(cmd!='d')&&(cmd!='D')&&(cmd!='q')&&(cmd!='Q')); switch(cmd){ case 'i':case 'I':printf("\nPlease input the DATA: ");scanf("%d",&x) ;printf("\nWhere? ");scanf("%d",&i) ;insert(L,i,x) ;printout(L);break ;case 'd':case 'D' :printf("\nWhere to Delete? ");scanf("%d",&i);delete(L,i);printout(L);break ;}}while((cmd!='q')&&(cmd!='Q'));}(二)有序顺序表的合并[问题描述] 已知顺序表la和lb中的数据元素按非递减有序排列,将la和lb表中的数据元素,合并成为一个新的顺序表lc[基本要求] lc中的数据元素仍按非递减有序排列,并且不破坏la和lb表[程序实现]# include <stdio.h># define maxnum 20typedef int DataType ;typedef struct{ DataType data[maxnum] ;int length ;}SeqList ;int MergeQL(SeqList la , SeqList lb , SeqList *lc){ int i , j , k ;if (la.length+1 + lb.length+1>maxnum){ printf("\narray overflow!") ;return 0;}i=j=k=0;while(i<=la.length && j<=lb.length){ if (la.data[i]<=lb.data[j])lc->data[k++]=la.data[i++] ;elselc->data[k++]=lb.data[j++];}/* 处理剩余部分 */while (i<=la.length) lc->data[k++]=la.data[i++];while (j<=lb.length) lc->data[k++]=lb.data[j++];lc->length=k-1;return 1;}main(){ SeqList la={{3,4,7,12,15},4} ;SeqList lb={{2,5,7,15,18,19},5} ;SeqList lc ;int i ;if (MergeQL(la,lb,&lc)){ printf("\n") ;for(i=0;i<=lc.length ; i++)printf("%4d",lc.data[i]);}}六、注意事项1、删除元素或插入元素表的长度要变化。

《数据结构》实验指导书

《数据结构》实验指导书

数据结构实验指导书吉林大学珠海学院计算机系2012.12实验目的与要求《数据结构》是计算机学科重要的专业基础课,北京市高校已将该课作为理工科非计算机专业的提高课程,北京大学将此课列为理工科非计算机专业必修课已经超过15 年。

该课程主要研究信息在计算机中的组织和表示方法。

上机实验是本课程教学至关重要的环节,通过上机实验,使学生在数据结构的逻辑结构定义、存储表示、操作的实现、数据结构的选择和应用、算法实践等方面加深对课程内容的理解,训练学生进行复杂程序设计的技能和培养良好程序设计的习惯。

考虑到大一上学期学习过C程序设计,本学期有C课程设计和C++程序设计,故数据结构课程的实验不安排验证性实验,按课程设计要求。

具体说是期初布置题目,按学号顺序确定如下题目,学生自己准备,期中检查,15周开始验收。

验收时间安排在周末。

实验内容从以下题目中选一题题目一、航空客运订票系统题目二、文章编辑题目三、宿舍管理查询软件题目四、校园导航系统题目五、散列法的实验研究题目六、小型图书馆管理系统(链表的插入,排序,查询,删除)题目七、学生搭配问题题目八、敢死队问题题目九、教学计划编制问题题目十、活期储蓄帐目管理题目十一、通讯录的制作题目十二、二叉排序树的实现题目十三、利用栈求表达式的值题目十四、走迷宫游戏题目十五、顺序结构、动态链表结构下的一元多项式的加法、减法、乘法的实现题目十六、线索二叉树的应用题目十七、稀疏矩阵实现与应用题目十八、树的应用题目十九、图的遍历和生成树求解实现题目二十、排序综合题目二十一、纸牌游戏题目二十二、利用栈求表达式的值,可供小学生作业,并能给出分数题目二十三、数制转换问题题目二十四、停车场问题题目二十五、学生成绩管理系统题目二十六、哈夫曼编码/译码器题目二十七、特殊矩阵的压缩存储算法的实现题目二十八、产品进销存管理系统题目二十九、客户消费积分管理系统题目三十、约瑟夫环题目三十一、任意长的整数加法题目三十二、广义表的应用题目三十三、关键路径问题题目三十四、构造可以使n个城市连接的最小生成树题目三十五、神秘国度的爱情故事题目三十六、利用Hash技术统计C源程序中关键字的频度题目一、航空客运订票系统通过此系统可以实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定);查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。

2010数据结构实验指导书

2010数据结构实验指导书

《数据结构B》实验指导书目录实验说明及要求 0实验一线性表..................................................................................... 错误!未定义书签。

实验二栈............................................................................................ 错误!未定义书签。

实验三队列 ........................................................................................ 错误!未定义书签。

实验四树.. (7)实验五散列表..................................................................................... 错误!未定义书签。

实验六排序 ........................................................................................ 错误!未定义书签。

实验七查找 ........................................................................................ 错误!未定义书签。

实验八图. (20)综合设计考核 (23)附录1 在V isual 2003中建立、编译和运行程序 (24)附录2 使用教材提供的参考文件的方法 (29)附录3 如何设置编译器生成C代码 (32)参考文献 (33)实验说明及要求一实验说明《数据结构B》实验是为了辅助《数据结构B》(双语教学)而开展的。

因为理论教学采用了两种教材(《数据结构与算法分析》的C++版和C语言描述版),所以在实验时程序的编写既允许采用C语言,又允许采用C++语言。

数据结构2实验指导书

数据结构2实验指导书

《数据结构2—C语言版》实验指导书(第3版)姓名:学号:班级:商务班指导教师:石林山东建筑大学商学院电子商务教研室2010年3月实验1 串一、实验目的:掌握串的存储结构,以及对其的各种操作。

二、实验内容:实现串的模式匹配算法。

三、实验步骤:1、编程:参考程序。

int Index_KMP(SString S, SString T, int *next){ int i,j;i=1; j=1;while (i<=S[0] && j<=T[0]){if (j==0 || S[i]==T[j]){++i;++j;}else j=next[j];}if (j>T[0]) return i-T[0];else return 0;}2、调试所编辑的程序。

3、运行结果。

4、存盘。

四、注意事项:1、next函数的实现void get_next(SString S, int *next){int i,j;i=1; next[1]=0; j=0;while (i<S[0]){if (j==0 || S[i]==S[j]) {++i; ++j; next[i]=j;}else j=next[j];}}2、串结构的操作特点。

3、掌握串插入、求子串操作。

五、思考题1、描述串的快速模式匹配的算法。

实验2 二叉树一、实验目的:掌握二叉树的链式存储结构,以及对其的各种操作。

二、实验内容:实现二叉树的建立、遍历算法。

三、实验步骤:1、编程:参考程序。

节点结构:Typedef struct BiTNode{int data;Struct BiTNode *lchild, *rchild;}BiTNode, * BiTree;先序遍历:BiTree CreatBiTree(){ BiTree T;scanf(&ch);if(ch= =¢ ¢) T=NULL;else {T=(BiTNode*)malloc(sizeof((BiTNode));T->data=ch; /*生成根结点*/T->lchild= CreatBiTree( ); /*构造左子树*/T->rchild= CreatBiTree(); /*构造右子树*/}return (T) ;}2、调试所编辑的程序。

《数据结构》实验指导书(新教学计划)

《数据结构》实验指导书(新教学计划)

数据结构实验指导书数据结构实验指导书目录数据结构实验指导书 (1)目录 (1)实验指导书概述 (2)实验题目 (3)实验一单链表的插入、删除 (3)[实验目的] (3)[实验内容] (3)[测试数据] (3)[实现提示] (3)实验二栈及其应用 (5)[实验目的] (5)[实验内容] (5)[测试数据] (5)实验三二叉树的递归算法 (5)[实验目的] (5)[实验内容] (6)[测试数据] (6)实验四查找及排序算法的应用 (7)[实验目的] (7)[实验内容] (7)[测试数据] (7)实验指导书概述“数据结构”是计算机专业一门重要的专业技术基础课程,是一门关键性核心课程。

本课程系统地介绍了软件设计中常用的数据结构以及相应的存储结构和实现算法,介绍了多种常用的查找和排序技术,并对其进行了性能分析和比较,内容非常丰富。

本课程的学习将为后续课程的学习以及软件设计水平的提高打下良好的基础。

由于以下原因,使得掌握这门课程具有较大难度:∙内容多,时间短,给学习带来困难;∙贯穿全书的动态链表存储结构和递归技术是学习中的重点和难点;∙隐含在各部分的技术和方法丰富,也是学习的重点和难点;∙先修课程中所介绍的专业性知识不多,加大了学习难度。

由于数据结构课程的技术性与实践性,《数据结构课程实验》的设置十分必要。

为了帮助学生更好地学习本课程,理解和掌握算法设计所需的技术,为整个专业学习打好基础,要求运用所学知识,上机解决一些典型问题,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握所用到的一些技术。

数据结构中稍微复杂一些的算法设计中可能同时要用到多种技术和方法,如算法设计的构思方法,动态链表,算法的编码,递归技术,与特定问题相关的技术等,要求重点掌握线性链表、二叉树和树、图结构、数组结构相关算法的设计。

在掌握基本算法的基础上,掌握分析、解决实际问题的能力。

通过实验实践内容的训练,突出构造性思维训练的特征, 提高学生组织数据及编写大型程序的能力。

《数据结构》实验指导书

《数据结构》实验指导书

《数据结构》实验指导书实验指导书课程名称:数据结构计算机科学与工程系《数据结构》课程组目录前言 .................................... 1 一、实验的作用和目的 ..................... 2 二、实验方式与考核方式................... 2 三、实验要求 ............................. 3 四、实验报告要求......................... 4 五、实验内容 .. (5)实验一线性表应用 (5)实验二栈与队列应用 (10)实验三二叉树的操作 (14)实验四图的遍历 ................................................18 实验五查找算法应用 (21)六、选做实验内容 (24)实验六排序 ................................................ ....24 实验七数组和广义表 (26)实验八串 ................................................ . (27)前言《数据结构》数据结构是计算机科学与技术及相关专业的一门重要专业基础课,它主要介绍线性结构、树型结构、图状结构三种逻辑结构元素的存储实现,在此基础上介绍一些典型算法,以及算法的时间、空间效率分析。

这门课程的主要任务是培养学生的算法设计能力及良好的程序设计习惯。

通过本课程的学习,使学生熟练地掌握数据结构的内在逻辑关系及其在计算机中的表示方法,以及相关基本操作的算法实现;掌握典型算法的设计思想及程序实现;熟悉各种数据结构在计算机科学中的基本应用;培养和训练学生结合实际应用,根据实际问题选取合适的数据结构、存储方案设计出简洁、高效、实用的算法;并为学习《操作系统》、《编译原理》、《数据库原理》等后续课程和研制开发各种系统和应用软件打下扎实的理论与实践基础。

《数据结构》实验指导书

《数据结构》实验指导书

实验一线性表的操作一、实验目的1.掌握在VC++6.0的集成环境中调试程序的基本方法。

2.掌握线性表的插入和删除操作在顺序存储结构和链式存储结构上的实现。

二、实验内容(三选一)(一)线性表的插入和删除操作在顺序存储结构和链式存储结构上的实现。

(1)线性表的插入和删除操作在顺序存储结构上的实现。

其中函数ListInsert_Sq的功能是在顺序线性表中第i个元素之前插入一个元素,函数ListDelete_Sq的功能是删除顺序线性表中第i个元素。

#define LIST_INIT_SIZE 1000#define LISTINCREMENT 10#include <stdio.h>#include <stdlib.h>#include <malloc.h>#define OK 1#define ERROR 0#define OVERFLOW -2//顺序表的存储结构定义typedef int Status;typedef int ElemType;typedef struct{ElemType *elem; //首地址int length; //顺序表的长度int listsize; //顺序表的存储容量} SqList;Status InitList_Sq(SqList &L) // 顺序表的初始化{}// InitList_Sq(Status ListInsert_Sq (SqList &L, int i, ElemType e) //插入{ //在顺序表的第i个位置插入值e为的元素}// ListInsert_SqStatus ListDelete_Sq(SqList &L, int i, ElemType &e) //删除{ //在顺序表的第i个位置删除一个元素,值在存进e中}// ListDelete_Sqint main( ){ElemType y;SqList L;int i,n;InitList_Sq(L); /* 初始化线性表*/printf("输入顺序表需存进的元素数量!\n");scanf("%d",&n);while(n<1 || n>10){printf("请输入1--10之间的整数!\n");scanf("%d",&n);}/* 以上循环语句的功能是控制输入数据个数的合法性,可以修改*/printf("依次输入存进顺序表中的数据元素:\n");for(i=1;i<=n;i++){scanf(“%d”,&y);ListInsert_Sq(L,i,y) ;}/* 以上循环语句的功能是依次输入要存进顺序表中的元素,并存进顺序表*/printf("顺序表中的元素为:");for(i=0; i<L.length; i++) printf("%d\t",L.elem[i]);/* 以上循环语句的功能是依次输出顺序表中的元素*/printf("\n");printf(“输入要删除元素的位置!\n”);scanf(“%d”,&n);if(ListDelete_Sq(L,n,y)==OK) { printf(“删除成功!”); printf("被删除的元素是:%d\n",y); }printf("顺序表中的元素为:");for(i=0; i<L.length; i++) printf("%d\t",L.elem[i]);/* 以上循环语句的功能是依次输出顺序表中的元素*/printf("\n");system("pause");return 0;}实验程序运行示例:(2)线性表的建立、插入、删除、打印和查找操作在链式存储结构上的实现。

《数据结构》实验指导(一)-无删减范文

《数据结构》实验指导(一)-无删减范文

《数据结构》实验指导(一)数据结构实验指导(一)1. 实验背景数据结构是计算机科学中的一个重要概念,它描述了如何组织和存储数据以及如何通过不同的操作来访问和修改这些数据。

在本实验中,我们将学习和实践数据结构中的线性表和链表。

2. 实验目的通过本次实验,我们将达到以下目的:- 理解线性表和链表的概念- 学会如何使用线性表和链表来解决常见的问题- 掌握线性表和链表的基本操作3. 实验内容3.1 线性表线性表是由 n 个数据元素 a1, a2, , an 组成的有序序列。

常见的线性表有数组和链表两种实现方式。

3.1.1 线性表的基本操作线性表的基本操作包括:- 初始化线性表- 判断线性表是否为空- 获取线性表的长度- 获取线性表中的元素- 在线性表的指定位置插入元素- 删除线性表中的指定元素- 清空线性表3.1.2 数组数组是一种连续的内存空间,可以存储相同类型的数据元素。

在数组中,每个元素的位置是通过下标来访问的,下标从 0 开始。

3.1.2.1 数组的插入操作数组的插入操作是将一个元素插入到数组的指定位置,同时需要将原位置的元素及其后续元素后移一位。

3.1.2.2 数组的删除操作数组的删除操作是将数组中指定位置的元素删除,同时需要将后续元素前移一位。

3.2 链表链表是一种离散的数据结构,它的元素包含两个部分:数据和指针。

每个节点都包含一个数据元素和一个指向下一个节点的指针。

3.2.1 链表的基本操作链表的基本操作包括:- 初始化链表- 判断链表是否为空- 获取链表的长度- 获取链表中的元素- 在链表的指定位置插入元素- 删除链表中的指定元素- 清空链表3.2.2 单链表单链表是最简单的链表形式,它的每个节点只包含一个指向下一个节点的指针。

3.2.2.1 单链表的插入操作单链表的插入操作是将一个元素插入到链表的指定位置,同时需要调整指针的指向。

3.2.2.2 单链表的删除操作单链表的删除操作是将链表中指定位置的节点删除,同时需要调整指针的指向。

《数据结构》实 验 指 导 书.doc

《数据结构》实 验 指 导 书.doc

《数据结构(C#)》实验指导书软件学院—、上机实验的指导思想和要求1.1 上机实验的目的上机实验的目的,绝不仅是为了验证教材和讲课的内容,或者验证自己所编的程序正确与否。

上机实验的目的是:(1)加深对讲授内容的理解,光靠课堂讲授,既枯燥无味又难以记住,但它们是很重要的,通过多次上机,就能自然地、熟练地掌握。

(2)熟悉所用的计算机系统的操作方法,也就是了解和熟悉C#程序开发的环境。

一个程序必须在一定的外部环境下才能运行,所谓“环境”,就是指所用的计算机系统的硬件和软件条件,或者说是工作平台。

使用者应该了解为了运行一个C#程序需要哪些必要的外部条件(例如硬件配置、软件配置),可以利用哪些系统的功能来帮助自己开发程序。

每一种计算机系统的功能和操作方法不完全相同,但只要熟练掌握一两种计算机系统的使用,再遇到其他系统时便会触类旁通,很快地学会。

(3)学会上机调试程序。

也就是善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行。

经验丰富的人,在编译连接过程中出现“出错信息”时,一般能很快地判断出错误所在,并改正之。

而缺乏经验的人即使在明确的“出错提示”下也往往找不出错误而求助于别人。

要真正掌握计算机应用技术,就不仅应当了解和熟悉有关理论和方法,还要求自己动手实现。

对程序设计来说,则要求会编程序并上机调试通过。

因此调试程序不仅是得到正确程序的一种手段,而且它本身就是程序设计课程的一个重要的内容和基本要求,应给予充分的重视。

调试程序固然可以借鉴他人的现成经验,但更重要的是通过自己的直接实践来累积经验,而且有些经验是只能“会意”难以“言传”。

别人的经验不能代替自己的经验。

调试程序的能力是每个程序设计人员应当掌握的一项基本功。

因此,在做实验时千万不要在程序通过后就认为万事大吉、完成任务了,而应当在已通过的程序基础上作一些改动(例如修改一些参数、增加程序一些功能、改变某些语句等),再进行编译、连接和运行。

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

华北电力大学科技学院
实验报告
实验名称数据结构试验
课程名称数据结构
专业班级:学生姓名:
学号:成绩:
指导老师:实验日期:2010年3月-5月
(实验报告如打印,纸张用A4,左装订;页边距:上下2.5cm,左2.5cm,右2.0cm;字体:字体小四号,1.25倍行距。


验证性、综合性实验报告应包含的主要内容:
一、实验目的及要求
1.实验目的
2.实验要求
二、所用仪器、设备
1.所需的硬件设备
2.所需的软件列表
三、实验原理
1.实验所用到的原理或理论
2.结合本实验阐述如何将理论与实验相结合
四、实验步骤(附程序流程图)
五、程序源代码
六、讨论与结论(对实验现象、实验故障及处理方法、实验中存在
的问题等进行分析和讨论,对实验的进一步想法或改进意见)
七、所附实验输出的结果或数据(按照以上格式书写报告)
华北电力大学科技学院实验报告
第9 页。

相关文档
最新文档