- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE
PAGE 1
《数据结构》实验指导书
南京工程学院通信工程学院
目 录
TOC \o 1-3 \h \z \u 前 言 1
实验一 线性表的基本操作 2
实验二 栈、队列的设计实现 4
实验三 串的模式匹配算法 6
实验四 二叉树的建立及遍历算法的实现 8
实验五 图的建立及遍历算法的实现 11
实验六 哈希表的设计与实现 14
实验七 排序算法实现 17
附录A 实验的步骤和规范 19
前 言
《数据结构》课程是信息工程、通信工程(计算机通信)专业的重要专业基础课程之一。
本书是为配合《数据结构》实验教学大纲而编写的实验指导书,其目的是使学生消化理论知识,加深对讲授内容的理解,尤其是一些算法的实现及其应用,培养学生独立编程和调试程序的能力,使学生对数据结构有更深刻的认识。
本实验指导书的内容都是基于C语言的,因此,要求学生对C语言和C++中的引用知识点要有一定的了解,建议使用VC++作为实验平台。
希望同学们在使用本实验指导书及进行实验的过程中,能够发现问题,并提出建议。
实验一 线性表的基本操作
一、实验目的:
1.熟悉Visual C++ 6.0 IDE开发环境。
2.掌握线性表的顺序与链式存储结构
3.掌握线性表的基本操作:初始化、插入、删除、查找算法。
二、实验内容:
1.定义线性表的链式存储结构
2.在线性表的链式存储结构上,编写函数实现链表的初始化,插入、删除,输出、销毁等算法。
三、实验要求:
1.数据结构定义正确,程序编码规范。
2.撰写实验报告,写出程序运行结果。
3.分析算法,写出本次实验总结。
四、实现提示:
1.数据结构定义
typedef int ElemType;
typedef struct LNode
{ //结点类型
ElemType data;
struct LNode *next;
} LNode, *LinkList;
2.标准库函数malloc,free ( 相应的头文件 stdlib.h )
p=(LNode *)malloc(sizeof(LNode));该语句的功能是申请分配一个类型为LNode的结点的地址空间,并将首地址存入指针变量p 中。当结点不需要时可以用标准函数free(p)释放结点存储空间,这时p为空值(NULL)。
五、思考与提高
1. 编写函数求链表的长度。
2. 编写函数取得链表的第i个数据元素。
实验二 栈、队列的设计实现
一、实验目的
1.掌握栈的顺序表示和基本操作算法
2.掌握队列的链式表示和基本操作算法
二、实验内容:
1.定义顺序栈的数据结构
2.编写函数实现的栈的初始化、入栈、出栈、判断栈是否为空的算法,并应用与表达式的括号匹配检测。
3.定义队列的链式数据结构
4.编写函数实现链队列的入队列、出队列算法
三、实验要求:
1.数据结构定义正确,程序编码规范。
2.撰写实验报告,写出程序运行结果。
3.分析算法,写出本次实验总结。
四、实现提示
1.顺序栈的数据结构
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef int SElemType;
typedef struct
{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
2.表达式的括号匹配算法提示
int match (char *expr)
{ SqStack S;
int i,len;
int temp;
InitStack(S);
len=strlen(expr);
for(i=0;ilen;i++)
{
if( expr[i]==( )
Push(S,expr[i]);
if( expr[i]==) )
if(!Pop(S,temp))
return 0;
}
if(EmptyStack(S))
return 1;
else
return 0;
}
如: (3+4)*12+(5-6)/2 match
(3+4)*12)+(5-6)/2) not match
五、思考与提高
1.用栈实现进制转换(十进制转换成二进制)
2.模拟服务台前的排队现象问题
实验三 串的模式匹配算法
一、实验目的:
1.掌握串的顺序存储结构
2.掌握串的基本算法
二、实验内容:
1.定义串的顺序存储结构。
2.编写函数实现串的初始化、分配、取子串算法
3.编写函数据实现串的模式匹配
三、实验要求:
1.数据结构定义正确,程序编码规范。
2.
文档评论(0)