数据结构的基本概念(17页).doc
《数据结构的基本概念(17页).doc》由会员分享,可在线阅读,更多相关《数据结构的基本概念(17页).doc(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-数据结构的基本概念-第 16 页数据结构的基本概念 大纲对本节的要求就是:本节的标题数据结构的基本概念。说到概念,绝对不是死记硬背的方式解决,而应该注意理解!(因为没有填空题或者是论述题,不需要记住。)本节所涉及到所需要掌握的概念有:1数据结构的概念数据结构:是讨论计算机系统中数据的组织形式及其相互关系。数据的基本单位:数据元素。数据的逻辑结构:分为线性结构和非线性结构。存储结构:数据在计算机中的存储方法。(在理解存储方法的时候要注意:不是把数据放在存储器里就完了,重要的是在以后怎样找到他们)数据的存储结构分为:顺序存储、链接存储、索引存储和散列存储。顺序存储方法:逻辑上相邻的数据元素存储在
2、实际相邻的存储单元中。链接存储方法:元素间的逻辑关系由指针字段确定,元素间的关系只是逻辑上的相邻,并不一定要求在物理上也相邻,数据元素的存储单元数据项指针项。索引存储方法:在存储元素信息时,建立一张附加索引表与之对应的方法。稠密索引:索引项对应元素稀疏索引:索引项对应一组元素散列存储方法:根据关键字直接算出元素的地址数据的处理:常用数据处理与运算的几种基本操作:遍历、插入、更新、删除、查找、排序。遍历和排序操作后,没有改变或增减数据元素;排序将改变其位置2举例 例 在已知的一个线性结构中有20个元素,将第8个元素的数据进行一次替代,则该操作属于算法中的( )。A) 遍历 B) 插入 C) 排序
3、 D) 更新【解析】 所谓遍历是指在数据结构的各个元素中移动或查看所有数据元素,而插入是指往数据结构中添加新的元素;更新则指个性或替代数据结构中指定元素的一个或多个数据项,显然,本题中,没有涉及到增加新的元素,而仅仅是对原已有的元素进行了数据项的替换。故答案应选D。例(判断)采用“索引存储方法”的数据可以进行随机读写()【解析】所谓“随机读写”,是相对于“顺序读写”而言,就是可以读写任意指定位置的数据,可以根据索引表找到元素的地址,而不需要从头开始。所以应该是正确的。线性结构考生在本节复习时,要着重从以下几个方向进行:1概念:线性结构的逻辑特征:有且仅有一个开始数据元素和个终点数据元素,并且所
4、有数据元素都最多只有一个直接前趋和一个直接后继。线性表、数组、字符串、队列等都有属于线性结构。如人们排队,一个人前后最多只一个人,不能有两个。有且只有一个无直接前继的开始元素和一个无直接后继的终点元素。 线性结构的类型主要有:线性表(又包括顺序表,线性链表)、堆栈、队列、数组、串等。 线性表的两种存储方式:顺序存储方式(由此形成顺序表) 链式存储方式(由此形成链表) 顺序表:数据元素按其逻辑次序依次存放在一组地址连续的存储单元里。 缺点:插入、删除等操作比较麻烦,长度动态的变化不方便。 线性链表:采用链式存储方式进行存储的线性表,即用一组任意的存储单元来存放线性表的数据元素,这组存储单元既可以
5、是连续的,也可以是不连续的,从而可以大提高存储器的使用效率。 链:在存储一个数据元素中,除了存储的数据本身外,还包含数据的直接后继(或直接前趋)的位置,或指针,这一部分称为链。 线性链表主要有:单链表,双链表,循环链表。 单向链表:。在单链表中,数据元素由数值域和数据元素的指针域两部分组成,即:每一个数据元素=数据域直接后继元素的地址。其中终点结点无直接后继,终结点的指针域值为空NIL。 双向链表:每一元素的指针域既包含直接后继,也包含直接前趋。即:每一个数据元素=直接前驱元素的地址数据域直接后继元素的地址。 循环链表:是一种首尾连接的链表。注意理解:计算机是根据“地址”来读写数据的:对于顺序
6、表是不是不需要地址?当然不是。对于顺序表我们只关心第一个地址,因为后面一个一个的都挨着连续存放。在此应理解顺序表,链表的插入、删除算法。 栈:只能在表的一端进行插入和删除运算的线性表。插入和删除的一端称为栈顶;另一端称为栈底。栈中没有元素为空栈。栈的指针始终指向栈顶。 栈的基本操作原则:后进先出Last In First Out (LIFO)。 栈的主要应用:子程序的嵌套调用,递归调用,中断系统的断点保护,编译系统的后缀表达式计算等。 队列:只能在表的一端进行删除(队头)另一端进行插入(队尾)的线性表。 操作原则:先进先出First In First Out(FIFO) 队列有两个指针,队头指
7、针:总是指队头元素前一位置;队尾指针:总是指向队尾元素所在的存储位置。 二维数组行优先的某一元素地址:Loc(aij)=Loc(a11)+(i-1)*n+(j-1) )*S 二维数组列优先的某一元素地址:Loc(aij)=Loc(a11)+(j-1)*m+(i-1)*S 其中M,N为二维数组最大行号和列号,i,j为某一元素的行、列下标,S为数组中每一元素所占字节数。 串由若干字符组成。 串的基本单位:为一个字节。2举例: 例: 判断题和选择题 (1)顺序表和线性链表的物理存贮形式都是顺序存贮。( )【解析】 本题是错误的,首先要有在第一节中的存贮结构的概念,数据结构中,将存贮结构(物理)分为四
8、种:顺序存贮、链接存贮、索引存贮、散列存贮。虽然顺序表和线性链表逻辑上都属于线性结构,但在物理存贮形式上有一定的区别,即顺序表的按顺序存贮形式,线性链表按链接存贮形式。 (2)单向链表的每个数据元素由两部分组成,一部分为存贮元素的数据域,另一部分为存贮直接后继(前趋)元素的数据域。【解析】:本题说法是错误的,单向链表的每个数据元素的确由两部分组成 ,一部分为该元的数据域(即本身的值),另一部分为其直接后继(或前趋)的存贮位置(地址),又称指针域。 (3)假设在一个计算机系统中,存放一个整型数据需要4个字节。现一个顺序表,数据元素都是整型数据,它第一个元素的地址是0Xfed1,那么第10个元素的
9、地址是() A) 0Xfeda B) 0Xfef1 C)0Xff17 D) 0Xfef5【解析】直接根据公式Loc(ai)=Loc(ai)+(i-1)*k可以算出来。这个公式不需要死记:第一的地址是0Xfed1,每个元素占4个字节,那么第二个元素的开始地址是0Xfed5,依次递推,那么第10个元素的地址是:fed1+4*9=fed1+24=fef5。注意是十六进制,至于进制的转换那是大一上期的内容,这里不再赘述。注意:链表在逻辑上可能是线性结构,也可能是非线性结构,但在物理上一定是链接存贮结构。 (4)栈和对列可以采用两类存贮结构存贮:一是顺序结构方式 ,二是链接存贮方式存贮( ) 【解析】:
10、本题说法正确。栈和对列是两种特殊的线性表,它们的逻辑结构和线性表是一致的,但其运算规则受了限制。既然都有是线性表(受限制的),当然符合线性表的物理存贮结构了。注意:在对线性表进行归类时,应将栈和队列归入其中,只不过要记住这两个类型的对象受限制(特征)在什么地方就行了。(5)队列中,允许删除的一端称为:( ) A 栈底 B 队尾 C 线顶 D 队头 【解析】:本题应选择答案D。队列允许在一端插入,称为队尾,允许在另一端删除称为队头,满足元素“先进先出”原则; (6) 判断题:数据元素在链式存储中,逻辑上相邻的两个元素不可能在物理位置上也相邻【解析】:说法错误。链式存储中不一定相邻,可能是相邻的(
11、7)判断题:子程序调用和递归调用是堆栈结构的典型应用。( )【解析】:正确,程序调用正是要求“先调用后返回”,堆栈结构用于保存环境变量等非线性结构非线性结构的逻辑特征是:一个结点元素可能有多个直接前趋和多个直接后趋。 大纲对本节要求不高,具体要求:树、二叉树和图的概念。 同学们在本节复习时,着重于树、二叉树和图这三个概念的联系、区别。 树的两个基本特征:有一个特定结点元素,称为根结点(ROOT),同层结点不相交。 重要术语: 叶子(终端结点):没有后继的结点 分支结点(非终端结点):非叶子结点 结点的度:一个结点子树的数目 树的度:树中某结点的度的最大值 子结点:某结点子树的根 父结点:相对于
12、某结点子树的根 兄弟:具有同一父结点的子结点 结点的层次:根结点的层次为1,其它结点的最大层数等于它的父结点的层数加1。 树的深度:一棵树中,结点的最大层次值 有序树和无序树:在树中各子树 T1,T2,Tm有相对次序。为有序树,否则为无序树。 森林:n棵树不相交的集合(n0)。任何一棵树删去结点,树就变成森林。 二叉树的基本概念:n个结点的有限集合(n0),这个集合可以是空(即n=0),此时称为空二叉树;或者由一个根结点和两棵相交的被称为根的左子树和右子树组成。 二叉树有五种基本形态和二个特殊情形。 二叉树的三种遍历方式:先序遍历、中序遍历、后序遍历。二叉树与树的不同点:树至少应有一个结点,二
13、叉树可以是空;二叉树结点的子树要区别左子树和右子树,即使某结点只有一棵子树,也要明确是左子树还是右子树。图:由边和点组成的(顶点是有穷、非空的)集合图与树的区别:图中,结点之间的联系是任意的,每个结点都可以与其他的结点相联系。例已知有如下结构:该结构中的结点有可能有多个前趋(后趋),每个结点只与上层的父节点有联系,则该结构属于( )A) 栈 B) 线性表 C) 图 D) 树【解析】:按照题里面的描述,显然是一种非线性结构,而又由于结点的联系不是任意的,故可知必为树结构,选D。几个常用算法 大纲所要求掌握的算法分成两类: 查找算法(顺序,二分,分块) 算法 排序算法(插入,选择,冒泡,快速,归并
14、)算法也是大纲要求的一个重点!同学们在这部分进行复习时,着重要理解清楚不同算法的原理及其操作过程!1基本概念 算法:计算机中对数据处理和运算的方法。即将一个实际问题划分为计算机能够解决的一步步细小的步骤,这一方法就称为计算方法。一、 查找算法: 查找算法的基本组成的两个对象:一是查找表,二是给定查找关键字值。查找算法的原理:根据给定的关键值,在一组查找表中确定一个其关键值等于给定值的数据元素。若存在这样的数据元素,则称查找成功,否则称查找失败。顺序查找:就是从查找表的第一个元素开始,逐个把数据元素的关键字值和给定值比较。若有相等,则查找成功,否则,到了最后一个元素也不与给定值相等,则查找失败。
15、顺序查找,又既适用于顺序存贮的查找表进行查找,也适用于对链式存贮结构的查找表进行查找。 顺序查找平均查找速度:为线性表长度的一半。顺序查找优缺点:简单容易实现,但查找效率低。 二分查找(对分法)基本思想:设线性表(alow,alow+1,amid,ahigh)中所有元素排列有序,S1:求出中间位置:mid=(low+high)/2 S2:将amid与Key比较 1)若amid=Key,则查找成功, 2)Amidlow,返回S1步再进行二分查找。 3)AmidKey,查找值在lowmid-1之间,将mid-1=high,返回S1步再进行二分查找。 以上过程反复进行,直到找到或未找到mid=low
16、(或high)为 止。二分查找平均查找速度:ASLLog2(n+1)-1。二分查找优缺点:查找次数少,速度快;但必须首先对线性表排序。分块查找:分块查找速度介于顺序和二分法查找之间。要注意:在使用分块查找前,查找表必须先做到块间有序,块内可以无序。 分块查找分两步进行:1)先用待查的关键字对索引关键字表(非查找表)进行二分查找或顺序查找确定待查数据元素可能在哪一块。2)在已确定的那一块(即查找表中的某一块)进行顺序查找。2练习题(判断题) 1)顺序队列不会产生假溢出( ) 2)二分法查找,查找表中元素越多时,则查找速度优势越能体现出来( ) 3)顺序查找时,查找表必须要有序。( ) 4)二分法
17、查找时,查找表必须先为升序状况。( ) 5)分块查找直接对查找表进行查找。( ) 6)当分块查找第一步中已经确定了在查找表中哪一块后,则在查找表的这一块中,既可采用二分法又可采用顺序查找方法。( ) 7)若查找表降序,采用二分法查找,如果中间值比查找关键字值更小,则下一次二分法,应对中间值前面部分进行。( ) 8)数组中某一元素分别按行优先和按列优先存储时,在内存中的物理位置都一样。( )答案:1) 2) 3 、 4、 5、 6、 7、 8、二、 排序算法 2 排序的基本概念:将一组数据元素按其排序码进行递增或递减排列的运算操作。 稳定和非稳定算法:如果待排序的序列中,存在多个排序码相同的数据
18、元素,若经过排序后这些数据元素的相对次序保持不变,则称这种排序算法是稳定的,否则是不稳定的。 内部排序和外部排序:如果整个排序都是在计算机内存中进行的称为内部排序;如果排序还使用到了外存,称为外部排序。注意:二者的区别是:是否使用了外存,而不是排序在什么地方进行的。 注意:对于具体的五种排序算法,一定要清楚每一种的排序原理及其排序过程!我们讲的五种算法都是内部排序方法。 插入排序基本思想:把n个数据元素序列分成 R1,Ri-1已排好序的有序部分和Ri,Ri+1,Rn未排序的无序两部分。排序部分的第I个元素Ri依次与R1,Ri-1 比较,并插入到有序部分的合适位置上,使得R1,Ri变为新的有序部
19、分。继续上述过程,直到当Rn与R1,Rn-1比较后插入到相应位置,则此序列为一有序序列。 插入排序是稳定排序。 选择排序:第一趟排序是在无序的R1,R2,Rn按排序选出最小的元素,将它与R1交换;第二趟排序是在无序的R2, R3 ,Rn中选出最小的元素,将它与R2交换; 第I趟排序时R1,R2,Ri-1已排好序,在当前无序的Ri,Ri+1,Rn中再选出最小的元素,将它与Ri元素交 换,使R1,R2,Ri成为有序,继续在未排好序的元素中进行上述过程,直到交换到最一个元素,使n个元素排列有序。选择顺序是不稳定排序冒泡法排序:从R1开始,两两比较Ri和Ri+1(i=1,2,n-1)的大小,若RiRi
20、+1则交换Ri和Ri+1的位置,第一趟完毕后Rn是排序码中最大的元素,再从R1开始两两比较Ri和Ri+1(i=1,2,n-2)的大小,若RiRi+1则交换Ri和Ri+1的位置,第二趟完毕后Rn-1是序列中次大元素,以此类推,进行n-1趟冒泡法排序后,n个元素为一有序数列。冒泡排序是稳定排序。快速排序:从待排序的n个数据元素中任意选取一个元素Ri(通常选取无序序列中的第一个元素)作标准, 调整序中各个元素的位置, 使排在Ri前面的元素的排序码都小于i-key, 排在Ri后的元素都大于Ri-key。通常把这样的一个过程称作一次快速排序。(排序中的难点算法)不稳定排序归并排序:将有n个元素的原始序列
21、看作n个有序子序列, 每个子序列的长度为1 , 然后从第一个子序列开始,把相邻的子序列两两合并, 得到n/2个长度为2 或1的子序列, 这一过程称为一次归并排序, 对第一次归并排序后的n/2个子序列采用上述方法, 继续顺序成对归并, 如此重复当最后得到长度为n的一个子序列时, 该子序列便是原始序列归并排序后的有序序列。该算法稳定。若是对两两有序序列进行归并又称为2-路归并。假设有原始数列:65 97 74 13 27 49 38,各种排序算法经过一趟排序后的 结果如下:(假设都进行从小到大的排序) 大家可以自己先练习一下插入排序:65 97 74 13 27 49 38选择排序:13 97 7
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 基本概念 17
限制150内