欢迎来到天天文库
浏览记录
ID:48679776
大小:267.50 KB
页数:31页
时间:2020-02-27
《2011考研计算机数据结构讲义.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数据结构绪论数据元素:数据元素是数据的基本单位一个数据元素可由若干数据项组成,数据项是数据不可分割的最小单位数据的逻辑结构分为:集合、线性结构(线性表)、非线性结构(树和图)存储结构:顺序存储(实现随机存取)、链式存储(只能顺序存取)、索引存储、散列存储数据结构在计算机中的表示称为数据的物理结构,又称为存储结构一、线性表大纲要求:(一)线性表的定义和基本操作(二)线性表的实现1.顺序存储结构2.链式存储结构3.线性表的应用知识点:1.深刻理解数据结构的概念,掌握数据结构的“三要素”:逻辑结构、物理(存储)结构及在这种结构上所定义的操
2、作“运算”。2.时间复杂度和空间复杂度的定义,常用计算语句频度来估算算法的时间复杂度。以下六种计算算法时间的多项式是最常用的。其关系为:O(1)3、示,给定下标,可以存取相应元素,属于随机存取的存储结构。5.线性表的顺序存储方式及其在具体语言环境下的两种不同实现:表空间的静态分配和动态分配。掌握顺序表上实现插入、删除、定位等运算的算法。6.尽管“只要知道某结点的指针就可以存取该元素”,但因链表的存取都需要从头指针开始,顺链而行,故链表不属于随机存取结构。要理解头指针、头结点、首元结点和元素结点的差别。头结点是在插入、删除等操作时,为了算法的统一而设立的(若无头结点,则在第一元素前插入元素或删除第一元素时,链表的头指针总在变化)。对链表(不包括循环链表)的任何操作,均要从头结点开4、始,头结点的指针具有标记作用,故头指针往往被称为链表的名字,如链表head是指链表头结点的指针是head。理解循环链表中设置尾指针而不设置头指针的好处。链表操作中应注意不要使链意外“断开”。因此,若在某结点前插入一个元素或删除某元素,必须知道该元素的前驱结点的指针。7.链表是本部分学习的重点和难点。重点掌握以下几种常用链表的特点和运算:单链表、循环链表、双向链表、双向循环链表的生成、插入、删除、遍历以及链表的分解和归并等操作。并能够设计出实现线性表其它运算的算法。8.从时间复杂度和空间复杂度的角度综合比较线性表在顺序和链式两种存储结5、构下的特点,即其各自适用的场合。小结:顺序表和链表的比较通过对它们的讨论可知它们各有优缺点,顺序存储有三个优点:(1)方法简单,各种高级语言中都有数组,容易实现。(2)不用为表示结点间的逻辑关系而增加额外的存储开销。(3)顺序表具有按元素序号随机访问的特点。但它也有两个缺点:(1)在顺序表中做插入删除操作时,平均移动大约表中一半的元素,因此对n较大的顺序表效率低。(2)需要预先分配足够大的存储空间,估计过大,可能会导致顺序表后部大量闲置;预先分配过小,又会造成溢出。链表的优缺点恰好与顺序表相反。在实际中怎样选取存储结构呢?(1)基于6、存储的考虑对线性表的长度或存储规模难以估计时,不宜采用顺序表;链表不用事先估计存储规模,但链表的存储密度较低,显然链式存储结构的存储密度是小于1的。(2)基于运算的考虑在顺序表中按序号访问ai的时间性能时O(1),而链表中按序号访问的时间性能O(n),所以如果经常做的运算是按序号访问数据元素,显然顺序表优于链表;而在顺序表中做插入、删除时平均移动表中一半的元素,当数据元素的信息量较大且表较长时,这一点是不应忽视的;在链表中作插入、删除,虽然也要找插入位置,但操作主要是比较操作,从这个角度考虑显然后者优于前者。(3)基于环境的考虑顺序7、表容易实现,任何高级语言中都有数组类型,链表的操作是基于指针的,相对来讲前者简单些,也是用户考虑的一个因素。总之,两种存储结构各有长短,选择那一种由实际问题中的主要因素决定。通常“较稳定”的线性表选择顺序存储,而频繁做插入删除的即动态性较强的线性表宜选择链式存储。练习题:(一)选择题:1.以下那一个术语与数据的存储结构无关?(A)A.队列B.哈希表C.线索树D.双向链表2、一个算法应该是(B)。A.程序B.问题求解步骤的描述C.要满足五个基本特性D.A和C.3、数据结构中,与所使用的计算机无关的是数据的(C)A.存储结构B.物理结构8、C.逻辑结构D.物理结构和存储结构4.算法的计算量的大小称为计算的(B)。A.效率B.复杂性 C.现实性 D.难度5.下列说法,不正确的是(D)。A.数据元素是数据的基本单位B.数据项是数据中不可分割的最小可标识单位C.数据可由若干个
3、示,给定下标,可以存取相应元素,属于随机存取的存储结构。5.线性表的顺序存储方式及其在具体语言环境下的两种不同实现:表空间的静态分配和动态分配。掌握顺序表上实现插入、删除、定位等运算的算法。6.尽管“只要知道某结点的指针就可以存取该元素”,但因链表的存取都需要从头指针开始,顺链而行,故链表不属于随机存取结构。要理解头指针、头结点、首元结点和元素结点的差别。头结点是在插入、删除等操作时,为了算法的统一而设立的(若无头结点,则在第一元素前插入元素或删除第一元素时,链表的头指针总在变化)。对链表(不包括循环链表)的任何操作,均要从头结点开
4、始,头结点的指针具有标记作用,故头指针往往被称为链表的名字,如链表head是指链表头结点的指针是head。理解循环链表中设置尾指针而不设置头指针的好处。链表操作中应注意不要使链意外“断开”。因此,若在某结点前插入一个元素或删除某元素,必须知道该元素的前驱结点的指针。7.链表是本部分学习的重点和难点。重点掌握以下几种常用链表的特点和运算:单链表、循环链表、双向链表、双向循环链表的生成、插入、删除、遍历以及链表的分解和归并等操作。并能够设计出实现线性表其它运算的算法。8.从时间复杂度和空间复杂度的角度综合比较线性表在顺序和链式两种存储结
5、构下的特点,即其各自适用的场合。小结:顺序表和链表的比较通过对它们的讨论可知它们各有优缺点,顺序存储有三个优点:(1)方法简单,各种高级语言中都有数组,容易实现。(2)不用为表示结点间的逻辑关系而增加额外的存储开销。(3)顺序表具有按元素序号随机访问的特点。但它也有两个缺点:(1)在顺序表中做插入删除操作时,平均移动大约表中一半的元素,因此对n较大的顺序表效率低。(2)需要预先分配足够大的存储空间,估计过大,可能会导致顺序表后部大量闲置;预先分配过小,又会造成溢出。链表的优缺点恰好与顺序表相反。在实际中怎样选取存储结构呢?(1)基于
6、存储的考虑对线性表的长度或存储规模难以估计时,不宜采用顺序表;链表不用事先估计存储规模,但链表的存储密度较低,显然链式存储结构的存储密度是小于1的。(2)基于运算的考虑在顺序表中按序号访问ai的时间性能时O(1),而链表中按序号访问的时间性能O(n),所以如果经常做的运算是按序号访问数据元素,显然顺序表优于链表;而在顺序表中做插入、删除时平均移动表中一半的元素,当数据元素的信息量较大且表较长时,这一点是不应忽视的;在链表中作插入、删除,虽然也要找插入位置,但操作主要是比较操作,从这个角度考虑显然后者优于前者。(3)基于环境的考虑顺序
7、表容易实现,任何高级语言中都有数组类型,链表的操作是基于指针的,相对来讲前者简单些,也是用户考虑的一个因素。总之,两种存储结构各有长短,选择那一种由实际问题中的主要因素决定。通常“较稳定”的线性表选择顺序存储,而频繁做插入删除的即动态性较强的线性表宜选择链式存储。练习题:(一)选择题:1.以下那一个术语与数据的存储结构无关?(A)A.队列B.哈希表C.线索树D.双向链表2、一个算法应该是(B)。A.程序B.问题求解步骤的描述C.要满足五个基本特性D.A和C.3、数据结构中,与所使用的计算机无关的是数据的(C)A.存储结构B.物理结构
8、C.逻辑结构D.物理结构和存储结构4.算法的计算量的大小称为计算的(B)。A.效率B.复杂性 C.现实性 D.难度5.下列说法,不正确的是(D)。A.数据元素是数据的基本单位B.数据项是数据中不可分割的最小可标识单位C.数据可由若干个
此文档下载收益归作者所有