实验指导数据结构B.docx

上传人:b****6 文档编号:5588368 上传时间:2022-12-28 格式:DOCX 页数:7 大小:18.04KB
下载 相关 举报
实验指导数据结构B.docx_第1页
第1页 / 共7页
实验指导数据结构B.docx_第2页
第2页 / 共7页
实验指导数据结构B.docx_第3页
第3页 / 共7页
实验指导数据结构B.docx_第4页
第4页 / 共7页
实验指导数据结构B.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

实验指导数据结构B.docx

《实验指导数据结构B.docx》由会员分享,可在线阅读,更多相关《实验指导数据结构B.docx(7页珍藏版)》请在冰豆网上搜索。

实验指导数据结构B.docx

实验指导数据结构B

附录综合实验

1、实验目的

本课程的目标之一是使得学生学会如何从问题出发,分析数据,构造求解问题的数据结构和算法,培养学生进行较复杂程序设计的能力。

本课程实践性较强,为实现课程目标,要求学生完成一定数量的上机实验。

从而一方面使得学生加深对课内所学的各种数据的逻辑结构、存储表示和运算的方法等基本内容的理解,学习如何运用所学的数据结构和算法知识解决应用问题的方法;另一方面,在程序设计方法、C语言编程环境以及程序的调试和测试等方面得到必要的训练。

2、实验基本要求:

1)学习使用自顶向下的分析方法,分析问题空间中存在哪些模块,明确这些模块之间的关系。

2)使用结构化的系统设计方法,将系统中存在的各个模块合理组织成层次结构,并明确定义各个结构体。

确定模块的主要数据结构和接口。

3)熟练使用C语言环境来实现或重用模块,从而实现系统的层次结构。

模块的实现包括结构体的定义和函数的实现。

4)学会利用数据结构所学知识设计结构清晰的算法和程序,并会分析所设计的算法的时间和空间复杂度。

5)所有的算法和实现均使用C语言进行描述,实验结束写出实验报告。

 

3、实验项目与内容:

1、线性表的基本运算及多项式的算术运算

内容:

实现顺序表和单链表的基本运算,多项式的加法和乘法算术运算。

要求:

能够正确演示线性表的查找、插入、删除运算。

实现多项式的加法和乘法运算操作。

2、二叉树的基本操作及哈夫曼编码译码系统的实现

内容:

创建一棵二叉树,实现先序、中序和后序遍历一棵二叉树,计算二叉树结点个数等操作。

哈夫曼编码/译码系统。

要求:

能成功演示二叉树的有关运算,实现哈夫曼编码/译码的功能,运算完毕后能成功释放二叉树所有结点占用的系统内存。

3、图的基本运算及智能交通中的最佳路径选择问题

内容:

在邻接矩阵和邻接表两种不同存储结构上实现图的基本运算的算法,实现图的深度和宽度优先遍历算法,解决智能交通中的路径选择问题。

设有n个地点,编号为0~n-1,m条路径的起点、终点和代价由用户输入提供,寻找最佳路径方案(例如花费时间最少、路径长度最短、交通费用最小等,任选其一即可)。

要求:

设计主函数,测试上述运算。

4、各种内排序算法的实现及性能比较

内容:

验证教材的各种内排序算法。

分析各种排序算法的时间复杂度。

要求:

使用随机数产生器产生较大规模数据集合,运行上述各种排序算法,使用系统时钟测量各算法所需的实际时间,并进行比较。

 

4、实验报告范例:

实验╳╳╳╳╳╳

班级____________姓名____________学号____________日期____________

1.实验目的:

╳╳╳╳╳╳╳╳╳╳╳╳╳╳╳╳╳╳╳╳

(扼要而准确地描述所求解的实验项目的目的。

2.实验任务:

╳╳╳╳╳╳╳╳╳╳╳╳╳╳╳╳╳╳╳╳

(明确实验项目的任务和演示程序的主要功能。

3.实验内容:

╳╳╳╳╳╳╳╳╳╳╳╳╳╳╳╳╳╳╳

(使用模块和流程图表示系统分析和设计的结果,描述各模块之间的层次结构,给出函数之间的调用关系和数据传递方式,给出核心算法的C源代码,并加上详细注释,分析主要算法的时间复杂度,必要时分析空间复杂度,给出算法分析的计算过程。

4.实验过程描述:

╳╳╳╳╳╳╳╳╳╳╳╳╳╳╳╳╳╳╳╳

(列出实验所用的测试用例和相应的程序运行结果(需要程序运行结果的屏幕截图),总结本次实验,包括对测试结果的分析,测试和调试过程遇到问题的回顾和分析,软件设计与实现的经验和体会,进一步改进的设想。

实验1线性表及多项式的运算

一、实验目的

1、掌握线性表的两种基本存储结构及其应用场合:

顺序存储和链接存储。

2、掌握顺序表和链表的各种基本操作算法。

3、理解线性表应用于多项式的实现算法。

二、实验内容

1、参照程序2.1~2.7,编写程序,完成顺序表的初始化、查找、插入、删除、输出、撤销等操作。

2、已知带表头结点单链表的类型定义如下:

typedefstructnode

{

ElemTypeelement;//结点的数据域

structnode*link;//结点的指针域

}node;

typedefstruct

{

structnode*head;

intn;

}headerList;

参照程序2.8~2.14,编写程序,完成带表头结点单链表的初始化、查找、插入、删除、输出、撤销等操作。

3、以题2所示带表头结点单链表为存储结构,编写程序实现单链表的逆置操作。

(原单链表为(a0,a1,……,an-1),逆置后为(an-1,an-2,……,a0),要求不引入新的存储空间)。

4、以题2所示带表头结点单链表为存储结构,编写程序实现将单链表排序成为有序单链表的操作。

5、已知带表头结点一元多项式的类型定义如下:

typedefstructpNode

{

intcoef;

intexp;

structpNode*link;

}pNode;

typedefstruct

{

structpNode*head;

}polynominal;

编写程序实现一元多项式的创建、输出、撤销以及两个一元多项式相加和相乘的操作。

实验2二叉树的基本操作及哈夫曼编码译码系统的实现

一、实验目的

1、掌握二叉树的二叉链表存储表示及遍历操作实现方法。

2、实现二叉树遍历运算的应用:

求二叉树中叶子结点个数、结点总数、二叉树的高度、交换二叉树的左右子树等。

3、掌握二叉树的应用—哈夫曼编码的实现。

二、实验内容

1、已知二叉树二叉链表结点结构定义如下:

typedefstructBinaryTreeNode{

TData;

structBinaryTreeNode*LChild,*RChild;

}BinaryTreeNode,*BinTree;

参照程序5.1~5.4,编写程序,完成二叉树的先序创建、先序遍历、中序遍历、后序遍历等操作。

2、以题1所示二叉链表为存储结构,编写程序实现求二叉树结点个数、叶子结点个数、二叉树的高度以及交换二叉树所有左右子树的操作。

3、已知哈夫曼树结点结构定义如下:

typedef{

ElementTypeData;//结点的数据域

intw;//结点的权值

intparent,lchild,rchild;//结点的双亲、左孩子、右孩子

}HFMTNode;

编写程序,实现哈夫曼树的创建、哈夫曼编码以及解码的实现。

实验3图的基本运算及飞机换乘次数最少问题

一、实验目的

1、掌握图的邻接矩阵和邻接表的存储实现方法。

2、实现图的深度优先和宽度优先遍历运算。

3、学习使用图算法解决应用问题的方法。

二、实验内容

1、已知图的邻接矩阵结构定义如下:

typedefintElemType;

typedefstruct

{

ElemType**a;//邻接矩阵

intn;//图的当前顶点数

inte;//图的当前边数

ElemTypenoEdge;//两顶点间无边时的值

}mGraph;

参照程序9.1~9.5,编写程序,完成邻接矩阵的初始化、撤销、边的搜索、插入、删除等操作。

2、以题1所示邻接矩阵为存储结构,编写程序,实现图的深度、宽度优先遍历。

3、已知图的邻接表结构定义如下:

typedefstructeNode

{

intadjVex;//任意顶点u相邻接的顶点

ElemTypew;//边的权值

structeNode*nextArc;//指向下一个边结点

}eNode;

typedefstruct

{

intn;//图的当前顶点数

inte;//图的当前边数

eNode**a;//指向一维指针数组

}lGraph;

参照程序9.6~9.10,编写程序,完成邻接表的初始化、撤销、边的搜索、插入、删除等操作。

4、以题3所示邻接表为存储结构,编写程序,实现图的深度、宽度优先遍历。

5、编写程序,实现飞机最少换乘次数问题:

设有n个城市,编号为0~n-1,m条航线的起点和终点由用户输入提供。

一条换乘次数最少的线路方案。

(提示:

可以使用有向图表示城市间的航线;只要两个城市间有航班,则图中这两点间存在一条权为1的边;可以使用Dijkstra算法实现)

实验4各种内排序算法的实现及性能比较

一、实验目的

1、掌握各种内排序算法的实现方法。

2、学会分析各种内排序算法的时间复杂度。

二、实验内容

1、已知待排序序列以顺序表结构实现,数据元素以及表结构定义如下:

typedefstructentry//数据元素

{

KeyTypekey;//排序关键字,KeyType应该为可比较类型

DataTypedata;//data包含数据元素中的其他数据项

};

typedefstructlist{//顺序表

intn;//待排序数据元素数量

EntryD[MaxSize];//静态数组存储数据元素

}List;

参照程序10.1~10.7,编写算法,分别实现顺序表的简单选择排序、直接插入排序、冒泡排序、快速排序、两路合并排序以及堆排序。

2、编写算法,利用随机函数,在文件中随机产生n个关键字。

(关键字定义为整型数据)

3、编写程序,分别验证在简单选择排序、直接插入排序、冒泡排序、快速排序、两路合并排序以及堆排序,在待排序关键字个数为500、10000、50000、100000时,完成排序所需要的时间。

(单位为:

毫秒)

4、将排序结果存放于excel工作表中,并以图表(簇状柱形图)的方式显示。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1