【考查目标】
1. 理解数据结构的基本概念;掌握数据的逻辑结构、存储结构及其差异,以及各种基本操作的实现。
2. 掌握基本的数据处理原理和方法的基础上,能够对算法进行设计与分析。
3. 能够选择合适的数据结构和方法进行问题求解。
一、线性表
大纲要求:
(一) 线性表的定义和基本操作
(二) 线性表的实现
1. 顺序存储结构
2. 链式存储结构
3. 线性表的应用
知识点:
1. 深刻理解数据结构的概念,掌握数据结构的“三要素”:逻辑结构、物理(存储)结构及在这种结构上所定义的操作“运算”。
2. 时间复杂度和空间复杂度的定义,常用计算语句频度来估算算法的时间复杂度。
以下六种计算算法时间的多项式是最常用的。其关系为:
O(1)<O(logn)<O(n)<O(nlogn) <O(n2)<O(n3)
指数时间的关系为: O(2n)<O(n!)<O(nn)
3. 线性表的逻辑结构,是指线性表的数据元素间存在着线性关系。主要是指:除第一及最后一个元素外,每个结点都只有一个前趋和只有一个后继。在顺序存储结构中,元素存储的先后位置反映出这种逻辑关系,而在链式存储结构中,是靠指针来反映这种逻辑关系的。
4. 顺序存储结构用向量(一维数组)表示,给定下标,可以存取相应元素,属于随机存取的存储结构。
5. 线性表的顺序存储方式及其在具体语言环境下的两种不同实现:表空间的静态分配和动态分配。掌握顺序表上实现插入、删除、定位等运算的算法。
6. 尽管“只要知道某结点的指针就可以存取该元素”,但因链表的存取都需要从头指针开始,顺链而行,故链表不属于随机存取结构。要理解头指针、头结点、首元结点和元素结点的差别。头结点是在插入、删除等操作时,为了算法的统一而设立的(若无头结点,则在第一元素前插入元素或删除第一元素时,链表的头指针总在变化)。对链表(不包括循环链表)的任何操作,均要从头结点开始,头结点的指针具有标记作用,故头指针往往被称为链表的名字,如链表head是指链表头结点的指针是head。理解循环链表中设置尾指针而不设置头指针的好处。链表操作中应注意不要使链意外“断开”。因此,若在某结点前插入一个元素或删除某元素,必须知道该元素的前驱结点的指针。
7. 链表是本部分学习的重点和难点。重点掌握以下几种常用链表的特点和运算:单链表、循环链表、双向链表、双向循环链表的生成、插入、删除、遍历以及链表的分解和归并等操作。并能够设计出实现线性表其它运算的算法。
8. 从时间复杂度和空间复杂度的角度综合比较线性表在顺序和链式两种存储结构下的特点,即其各自适用的场合。
小结:
顺序表和链表的比较
通过对它们的讨论可知它们各有优缺点,顺序存储有三个优点:
(1)方法简单,各种高级语言中都有数组,容易实现。
(2)不用为表示结点间的逻辑关系而增加额外的存储开销。
(3)顺序表具有按元素序号随机访问的特点。
但它也有两个缺点:
(1)在顺序表中做插入删除操作时,平均移动大约表中一半的元素,因此对n较大的顺序表效率低。
(2)需要预先分配足够大的存储空间,估计过大,可能会导致顺序表后部大量闲置;预先分配过小,又会造成溢出。
链表的优缺点恰好与顺序表相反。
在实际中怎样选取存储结构呢?
(1)基于存储的考虑
对线性表的长度或存储规模难以估计时,不宜采用顺序表;链表不用事先估计存储规模,但链表的存储密度较低,显然链式存储结构的存储密度是小于1的。
(2)基于运算的考虑
在顺序表中按序号访问ai的时间性能时O(1),而链表中按序号访问的时间性能O(n),所以如果经常做的运算是按序号访问数据元素,显然顺序表优于链表;而在顺序表中做插入、删除时平均移动表中一半的元素,当数据元素的信息量较大且表较长时,这一点是不应忽视的;在链表中作插入、删除,虽然也要找插入位置,但操作主要是比较操作,从这个角度考虑显然后者优于前者。
(3)基于环境的考虑
顺序表容易实现,任何高级语言中都有数组类型,链表的操作是基于指针的,相对来讲前者简单些,也是用户考虑的一个因素。
总之,两种存储结构各有长短,选择那一种由实际问题中的主要因素决定。通常“较稳定”的线性表选择顺序存储,而频繁做插入删除的即动态性较强的线性表宜选择链式存储。
练习题:
(一)选择题:
1.以下那一个术语与数据的存储结构无关?( A )
A.队列 B. 哈希表
C. 线索树 D. 双向链表
2、一个算法应该是( B )。
A.程序 B.问题求解步骤的描述
C.要满足五个基本特性 D.A和C.
3、数据结构中,与所使用的计算机无关的是数据的( C )
A.存储结构 B.物理结构 C.逻辑结构 D.物理结构和存储结构
4. 算法的计算量的大小称为计算的( B )。
A.效率 B.复杂性 C.现实性 D.难度
5.下列说法,不正确的是(D)。
A.数据元素是数据的基本单位
B.数据项是数据中不可分割的最小可标识单位
C.数据可由若干个数据元素构成
D.数据项可由若干个数据元素构成
考研计算机强化班数据结构讲义-崔微
本站小编 免费考研网/2019-03-26
相关话题/数据结构
严蔚敏数据结构习题集答案
第一章 绪论 1.16 void print_descending(int x,int y,int z)//按从大到小顺序输出三个数 { scanf(%d,%d,%d,x,y,z); if(xy) x- //-为表示交换的双目运算符,以下同 if(yz) y- if(xy) x- //冒泡排序 printf(%d %d %d,x,y,z); }//print_descending 1.17 Status fib(int k,int ...专业课考研资料 本站小编 免费考研网 2019-03-25计算机考研(超越135分系列之二)-数据结构讲义(严蔚敏版)(图文).辅导材料.学习材料(图文)
前言 缘起 《数据结构》是一门计算机专业基础课,各类计算机考试都禁不住要考它。我给学生辅导这门课程已经有几个年头了,讲稿换了几次,逐渐丰富起来。加之看到学生们埋头记笔记时辛苦的样子,就产生了写一本小册子的想法。另外,还有一层意思就是对数次辅导进行总结,以便交流之用。 说明 首先,需要说明的是这本书 ...专业课考研资料 本站小编 免费考研网 2019-03-25山东大学数据结构考研专业课辅导笔记
山东大学算机研究生入学考试专业课辅导班 《数据结构》笔记 04年形势: 1、1-5章占50分,6+7章50分,其余50分,第8、11章不考,除3.3、5.7、12.5、12.6外其余带*号的均不做要求; 2、题型为简答和大题的形式,链表+树+链表分值50%,算法设计题目占40分左右,算法思想题目占10分左右,算法主要集中在链表、树、内部排序 ...专业课考研资料 本站小编 免费考研网 2019-03-22南京师范大学考研C语言程序设计(含数据结构)历年真题试题(1999-2009)
南师大2009 年硕士研究生招生入学考试初试试题 C 语言程序设计(含数据结构) 程序设计(共 150 分,请书写整洁,卷面有分) (1)、设计一个程序,找出 1~200 之间的所有水仙花数。所谓水仙花数是指一个数的各位 数字的立方和恰好等于该数本身。例如:153=13+33+53。(本题 15 分) (2)、设计一个程序,实现输入 ...专业课考研资料 本站小编 免费考研网 2019-03-14西北大学计算机专硕2015-2010历年考研真题(数据结构,软件工程学科专业基础综合)
专业课考研资料 本站小编 免费考研网 2019-01-05华中科技大学软件学院887数据结构与算法分析历年考研真题汇编
目录封面内容简介目录2006年华中科技大学软件学院451数据结构与算法分析考研真题及部分参考答案2007年华中科技大学软件学院427数据结构与算法分析考研真题及部分参考答案2011年华中科技大学软件学院数据结构与算法分析考研真题(回忆版)及部分参考答案2012年华中科技大学软件学院数据结构与算法分析 ...辅导考试考研资料 本站小编 免费考研网 2018-12-22南开大学813程序设计与数据结构[专业硕士]历年考研真题汇编
目录封面内容简介目录2010年南开大学908程序设计与数据结构考研真题2011年南开大学822程序设计与数据结构考研真题2012年南开大学831程序设计与数据结构考研真题2013年南开大学823程序设计与数据结构考研真题内容简介本书收集整理了南开大学程序设计与数据结构20 ...辅导考试考研资料 本站小编 免费考研网 2018-12-22南开大学软件学院815C语言与数据结构[专业硕士]历年考研真题汇编
目录封面内容简介目录2002年南开大学软件学院830C语言与数据结构考研真题2003年南开大学软件学院830C语言与数据结构考研真题2004年南开大学软件学院830C语言与数据结构考研真题2005年南开大学软件学院830C语言与数据结构考研真题2006年南开大学软件学院830C语言与数据结构考研真题 ...辅导考试考研资料 本站小编 免费考研网 2018-12-22南京理工大学计算机科学与工程学院825计算机专业基础B(数据结构、操作系统)[专业硕士]历年考研真题汇编
目录封面内容简介目录2003年南京理工大学计算机科学与工程学院计算机专业基础考研真题及部分参考答案2004年南京理工大学计算机科学与工程学院计算机专业基础考研真题及部分参考答案2005年南京理工大学计算机科学与工程学院计算机专业基础考研真题及部分参考答案2006年南京理工大学计算机科学与工程学院计算 ...辅导考试考研资料 本站小编 免费考研网 2018-11-302019年南昌大学信息工程学院829数据结构全套资料
目录说明:本全套资料免费下载,共包括7种电子书。使用全套资料密码激活后,全套资料里的所有电子书、所有题库均可使用。1.历年考研真题汇编[电子书]南昌大学信息工程学院829数据结构历年考研真题汇编[免费下载]2.指定教材视频讲解[电子书]严蔚敏《数据结构》(C语言版)【教材精讲+考研真题解析】讲义与视 ...辅导考试考研资料 本站小编 免费考研网 2018-11-30南昌大学信息工程学院829数据结构历年考研真题汇编
目录封面内容简介目录1998年南昌大学信息工程学院数据结构考研真题1999年南昌大学信息工程学院数据结构考研真题(部分)2000年南昌大学信息工程学院数据结构考研真题2001年南昌大学信息工程学院数据结构考研真题及参考答案2002年南昌大学信息工程学院数据结构考研真题2003年南昌大学信息工程学院数 ...辅导考试考研资料 本站小编 免费考研网 2018-11-30湖南大学信息科学与工程学院866数据结构历年考研真题汇编
目录封面内容简介目录2000年湖南大学数据结构考研真题2001年湖南大学数据结构考研真题及参考答案2002年湖南大学418数据结构考研真题2003年湖南大学418数据结构考研真题2004年湖南大学418计算机专业综合考研真题2005年湖南大学424计算机专业综合考研真题2006年湖南大学440数据结 ...辅导考试考研资料 本站小编 免费考研网 2018-11-30南京大学计算机科学与技术系845数据结构、计算机组成原理、操作系统和计算机网络历年考研真题汇编
目录封面内容简介目录1996年南京大学计算机考研真题(操作系统、数据结构部分)1997年南京大学计算机考研真题(操作系统、数据结构部分)1998年南京大学计算机考研真题(操作系统、数据结构部分)1999年南京大学计算机考研真题(操作系统、数据结构部分)2000年南京大学计算机考研真题(操作系统、数据 ...辅导考试考研资料 本站小编 免费考研网 2018-11-30南京大学842数据结构、软件工程、操作系统和计算机网络历年考研真题汇编
目录封面内容简介目录1996年南京大学计算机考研真题(操作系统、数据结构部分)1997年南京大学计算机考研真题(操作系统、数据结构部分)1998年南京大学计算机考研真题(操作系统、数据结构部分)1999年南京大学计算机考研真题(操作系统、数据结构部分)2000年南京大学计算机考研真题(操作系统、数据 ...辅导考试考研资料 本站小编 免费考研网 2018-11-302019年复旦大学879数据结构、操作系统和网络考研大纲
879数据结构、操作系统和网络考试大纲一、考试内容范围本科目考试内容由计算机数据结构与操作系统、计算机网络等两部分组成。数据结构和操作系统部分:数据结构的概念和分类算法、算法设计和算法分析、度量线性表、栈和队列、数组、树和二叉树、图等基本概念基本操作查找、排序基本概念和基本方法操作系统的基本概念和结 ...专业课大纲 本站小编 免费考研网 2018-11-04