计算机考研基础讲义数据结构基础.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
§7.1 树 1、树的定义 树(Tree)是包含n(n0)个结点的有穷集合K,且在K中定义了一个关系N,N满足以下条件: (1) 有且仅有一个结点K0它对于关系N来说没有前驱,称K0为树的根结点; (2) 除K0外,K中的每一个结点对于关系N来说有且仅有一个前驱; (3)K中各结点对关系N来说可以有m个后继 §7.2 树的常用术语 树的结点:包含一个数据元素及若干指向其子树的分支 结点的度:结点所拥有的子树的个数称为该结点的度 叶子:度为零的结点,又称终端结点 树的深度:树中各结点层次的最大值称为该树的深度 §7.3 二叉树 二叉数的定义 二叉数的存储结构:顺序存储结构、链式存储结构 二叉数的遍历:就是按某一种规则访问树中的每一个结点,且使得每个结点均被访问一次,而且仅被访问一次。 二叉数的遍历方法:前序遍历、中序遍历、后序遍历 第九章 查找 查找(Searching) 又称检索。就是从一个数据元素集合中找出某个特定的数据元素; 它是数据处理中经常使用的一种重要的操作,尤其是当所涉及的数据量较大时,查找算法的优劣对整个软件的效率影响很大; 本章首先介绍关于查找的基本概念,然后讨论查找的各种方法,最后对各种查找方法作一比较。 §9.1 查找的基本概念 查找表(Search Table) 是由同一类型的数据元素(或记录)构成的集合 对查找表进行的操作有以下四种 (1)查询某个特定的数据元素是否在查找表中 (2)检索某个特定的数据元素的各种属性 (3)在查找表中插入一个数据元素 (4)从查找表中删除某个数据元素 §9.1 查找的基本概念 静态查找表(Static Search Table) 若只对查找表进行查找和检索两种操作,则称此查找表为静态查找表 动态查找表(Dynamic Search table) 若再查找过程中同时插入查找表中不存在的记录,或从查找表中删除已存在的某个记录,则称此类表为动态查找表 关键字(Key) 标志数据元素(或记录)中某个数据项的值,用它可以标识一个数据元素(或记录) §9.2 线性表的查找 顺序查找(sequential Search) 也称线性查找,是一种最简单的查找方法,它属于静态查找 顺序查找方法 顺序查找的基本思想:从表的一端开始,顺序扫描线性表,依次用待查找的关键字值与线性表里各结点的关键字值逐个比较,若在表中找到了某个记录的关键字与待查找的关键字值相等,表明查找成功;如果找遍所有结点也没有与待查找的关键字值相等,则表明查找失败 §9.2 线性表的查找 main() {int a[100]={0,12,5,36,58,21,61,15,16,32,17}; int i,key; printf (Input the Key:); scanf (%d,key); a[0]=key; for (i=10;a[i]!=key;i--); if (i==0) printf (Searching Fail!\n); else {printf (Searching Success!\n); printf (a[%d]=%d\n,i,key);} } §9.2 线性表的查找 折半查找(binary Search) 也称为二分查找,是一种效率较高的查找方法,查找时要求表中的结点按关键字的大小排序 折半查找方法 折半查找的基本思想:首先用要查找的关键字值与中间位置结点的关键字值相比较(这个中间结点把线性表分成了两个子表).比较结果相等,则查找成功;若不相等,再根据要查找的关键字值与该中间结点关键字值的大小确定下一步查找在哪个子表中进行 #include stdio.h main() {int a[100]={0,5,13,19,22,37,56,64,75,80,88,92}; int low=1,high=11,mid,key,flag=0; printf (Input the Key:); scanf (%d,key); while (low=high) {mid=(low+high)/2; if (key==a[mid]) {printf (Searching Success!); printf (a[%d]=%d\n,mid,key); flag=1;break;} else if (keya[mid]) high=mid-1; else

文档评论(0)

sandaolingcrh + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档