《数据结构课程设计》报告-学生通讯录管理系统-.docx

《数据结构课程设计》报告-学生通讯录管理系统-.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机与软件学院 《数据结构课程设计》报告 题目: 学生通讯录管理系统 学院: 计算机与软件学院 专业: 软工移动设备应用开发 一、课程设计概述 目的 1.掌握二叉树的结构特征,以及各种存储结构的特点及适用范围。 2.掌握用指针类型描述、访问和处理二叉树的运算。 3.掌握二叉树的先序,中序,后序,层序遍历,并运用到实际生活中。 4.掌握二叉树的图形输出,培养空间想象能力和思维。 5.运用递归的思想,多语句分支结构进行程序的编写。 需求描述 二叉树系统是一个与现实生活各个领域联系的小型系统(算法)。二叉树可以简单明了的表示很多繁琐的信息数据。同时,二叉树在有很多方面有具体的应用。通过搜集各方面的资料发现,越来越多领域开始选择使用二叉树模型来进行设计投资决策,并以此为平台,实现多功能,本文结合了多领域的知识,给出了在生活方面,学习方面,以及投资方面的多种实例,并且加以概括和介绍。 二叉树几种遍历 1.前序遍历(根左右) 递归定义;访问根节点,前序遍历根节点的左子树,前序遍历根节点的右子树 2.中序遍历(左根右) 递归定义;中序遍历根节点的左孩子,访问根节点,中序遍历根节点的右孩子 3.后序遍历(左右根) 递归定义;后序遍历根节点的左子树,后序遍历根节点的右子树,访问根节点 4.层次遍历 对整棵二叉树按从上到下,对每一层按从左到右的顺序进行遍历。这里我们需要借助队列:先访问节点的孩子节点也应比后访问节点的孩子节点先访问。故这就类似于队列先进先出的性质,每访问一个节点时,它的孩子节点(如果存在)就随着入队。 先序遍历创建二叉树 递归实现 :void createBiTree(BiTree T) 先序遍历二叉树函数:利用先序遍历的方法遍历整棵树 void FirstOrderTraverse(BiTree T) 中序遍历二叉树函数:利用中序遍历的方法遍历整棵树 void InOrderTraverse(BiTree T) 后序遍历二叉树函数:利用后序遍历的方法遍历整棵树 void LastOrderTraverse(BiTree T) 层序遍历二叉树函数:利用层序遍历方法遍历整棵树 void LevelTraverse(BiTree T) 打印二叉树函数:利用递归的方法打印整棵树 void PrintTree(BiTree T,int nLayer) 菜单界面:运用switch——case和while函数实现 void menu() 二、编码实现 头文件 关键代码 void createBiTree(BiTree T){ //先序遍历创建二叉树 递归实现 char ch; cinch; if(ch==#)T=NULL; //递归出口 else{ T=new BiTNode; T-data=ch; createBiTree(T-lchild); //创建左子树 createBiTree(T-rchild); //创建右子树 } } void FirstOrderTraverse(BiTree T){ //先序遍历二叉树,递归实现 if(T){ coutT-data; FirstOrderTraverse(T-lchild); FirstOrderTraverse(T-rchild);} } void InOrderTraverse(BiTree T){ //中序遍历二叉树,递归实现 if(T){ InOrderTraverse(T-lchild); coutT-data; InOrderTraverse(T-rchild); } } void LastOrderTraverse(BiTree T){ //后序遍历二叉树,递归实现 if(T){ LastOrderTraverse(T-lchild); LastOrderTraverse(T-rchild); coutT-data; } } void LevelTraverse(BiTree T) { queueBiTree q;// 建队 q.push(T);// 根节点入队 BiTree p; while(!q.empty())(队列循环) { p=q.front(); // 获取行列的首元素 q.pop(); // 首元素出队 coutp-data ; // 输出结点的值 if(p-lchild!=NULL) // 若结点的左孩子不空 { q.push(p-lchild);}(指向右孩子) if(p-rchild!=NULL)// 若结点的右孩子不空 { q.push(p-rchild);(指向左孩子) } } } int Depth(Bi

文档评论(0)

k12教育文档 + 关注
实名认证
服务提供商

本人专注于k12教育,英语四级考试培训,本人是大学本科计算机专业毕业生,专注软件工程计算机专业,也可承接计算机专业的C语言程序设计,Java开发,Python程序开发。

1亿VIP精品文档

相关文档