- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《数据结构》课程设计任务书
学期:11-12-2 班级:网络10
一、设计目的
《数据结构》是一门实践性较强的专业基础课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。本课程设计的目的就是要达到理论与实际应用相结合,使同学们能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养基本的、良好的程序设计技能。
二、设计要求
1、通过这次设计,要求在数据结构的逻辑特性和物理表示、数据结构的选择应用、算法的设计及其实现等方面加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。
2、学生必须仔细研读《数据结构》课程设计(实习)要求,以学生自学为主、指导教师指导为辅,认真、独立地完成课程设计的任务,有问题及时主动与指导教师沟通。
3、本次课程设计按照教学要求需要在一周半时间内独立完成,学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况,及时地向指导教师汇报。
4、编程语言任选。
三、设计选题
题一:线索二叉树(**)
任务:
建立中序线索二叉树,并且中序遍历;
求中序线索二叉树上已知结点中序的前驱和后继;
需求分析和概要设计:
建立中序线索二叉树,并且中序遍历。首先就是要建立树,再将树中序线索化。求中序线索二叉树上已知结点中序的前驱和后继时,即是将树在遍历一遍。也可以在遍历的过程中,将树的结点放在数组中,当然必须讲述先遍历一遍,这是用空间来换时间。
详细设计:
树的结构体的声明:
typedef char TElemtype;
typedef enum PointerTag{Link,Thread}; //设置标志:Link为指针,Thread为线索
typedef struct BiThrNode{ //树结点结构体
TElemtype data;
struct BiThrNode *lchild,*rchild;
PointerTag LTag,RTag;
}BiThrNode,*BiThrTree;
相关函数的声明:
void InitBiTree(BiThrTree T); //初始化树
void CreatBiTree(BiThrTree T); //建立二叉树
void InOrderThreading(BiThrTree Thrt,BiThrTree T); //中序线索二叉树
void InThreading(BiThrTree p); //线索化
int InOrderTraverse_Thr(BiThrTree T); //中序遍历
void InOrderThread_BeAf(); //求已知结点中序的前驱和后继
初始化树:
void InitBiTree(BiThrTree T)
{
T = new BiThrNode;
if(!T) exit(1);
T = NULL;
}
建立二叉树:
void CreatBiTree(BiThrTree T)
{
char ch;
cinch;
if(ch == @) T = NULL;
else
{
T = new BiThrNode;
if(!T) exit(1);
T-data = ch;
CreatBiTree(T-lchild);
CreatBiTree(T-rchild);
}
}
中序线索二叉树:
void InOrderThreading(BiThrTree Thrt,BiThrTree T)
{
Thrt = new BiThrNode; //设置头结点
if(!Thrt) exit(1);
Thrt-LTag = Link; //头结点左边标志为指针
Thrt-RTag =Thread; //右边的为线索
Thrt-rchild = Thrt; //有孩子指向头结点本身
if(!T) Thrt-lchild = Thrt; //若树根结点为空,则头结点左孩子指向头结点
else
{ //若根结点不为空,
Thrt-lchild = T; //头结点左孩子指向根结点
pre = Th
文档评论(0)