2019数据结构考研(一)

知识框架

数据结构的基本概念

  • 数据:数据是信息的载体,是所有能描述事物属性的数,字符以及所有能输入到计算机被计算机程序识别和处理的符号的集合
  • 数据元素:数据元素是数据的基本单位
  • 数据项:数据项是构成数据元素不可分割的最小单位
    注意:不要混淆数据,数据元素和数据项,例如:学生记录就是一个数据元素,它由学号,姓名,性别等数据项组成
  • 数据对象:数据对象是具有相同性质的数据元素的集合,是数据的一个子集
  • 数据类型: 原子型,结构类型和抽象数据类型:抽象数据组织与相关操作
  • 抽象数据类型:通常用数据对象,数据关系和数据操作三组来表示抽象数据类型
  • 数据结构:是相互之间存在一种或者多种特定关系的数据元素的集合,数据结构主要包括三个方面的内容(逻辑结构,存储结构,数据运算),一个算法的设计取决于逻辑结构,而算法的实现则取决于存储结构

数据的逻辑结构

数据的逻辑结构分为线性结构和非线性结构
线性结构:结构中的数据元素只存在一对一的关系
树形结构:结构中的数据元素存在一对多的关系
图状结构和网状结构:结构中的数据元素存在多对多的关系
集合:结构中的数据元素除了”同属于一个集合”的关系外,别无其他的关系

数据的存储结构

数据的存储结构是指数据元素在计算机中的表示,又称为物理结构,是数据的逻辑结构用计算机语言的实现,是基于计算机语言的,数据的存储结构是逻辑结构在计算机上的映射,他不能独立于逻辑结构存在

  • 顺序存储:把逻辑上相邻的元素存储在物理位置上也相邻的存储单元里面,元素之间的关系用存储单元之间的关系来表示,其优点是可以实现随机存取,每个元素占用最小的存储空间,缺点是只能使用相邻的一整块存储单元,可能产生较多的外部碎片

外部碎片,是由于大量信息由于先后写入、置换、删除而形成的空间碎片。为了便于理解,我们将信息比作货物,将存储空间比作仓库来举例子。假设,我们有编号为1、2、3、4、5、6的6间仓库库房,前天送来了一大宗货,依次装入了1、2、3、4、5号仓库,昨天又因故将4号库房的货物运走了,那么数值上说我们还有两间空仓库的空间,但是如果这时候送来两间仓库容量的货物但要求必须连续存放的话,我们实际上是装不下的。这时的4、6号仓库,就成为一种空间的碎片。由于这样的原因形成的空间碎片,我们称之为外部碎片。从上面的例子我们可以理解,外部碎片是可以通过一些措施来改善或者解决的。对于在硬盘上的外部碎片,我们通常用磁盘碎片整理来解决,对应上面的例子,就是将5号仓库的货物及时移动到新腾出的4号仓库,这样,1-4号仓库都是满的,而5、6号仓库则形成了有效的、连续的空间,能够适应新的应用要求了;对于内存中的外部碎片,我们内存管理中常用的页面管理形式,就是为了解决这个问题的。这里就不详述了。
内部碎片,是由于存量信息容量与最小存储空间单位不完全相符而造成的空间碎片。还是沿用上面的例子,这次我们的6间仓库目前都是空置的,但是假设我们管理仓库的最小空间单位是间,今天运来了容量为2.5间仓库的货物,那也要占用我们1-3号3间仓库,尽管3号仓库还闲置着一半的空间,但是这半间仓库已经不能再利用了(因为是以间为最小单位么);这时,我们的仓库中就形成了半间仓库的空间碎片,仓库的有效容量只剩下3间仓库了

  • 链式存储 :不要求逻辑上相邻的数据元素在物理位置上也相邻,借助指示存储位置的指针来表示元素之间的逻辑关系,优点是不会出现碎片现象,充分利用所有的存储单元,缺点是:每个元素存储指针而占用多余的存储空间,只能实现顺序存取
  • 索引存储:在存储元素信息的同时,还建立附加的索引表,索引表中的每一项为索引项,索引项由关键字和地址组成,其优点是检索速度快,缺点是增加了索引表占用多余的内存空间,在增加删除数据时都需要修改索引表
  • 散列存储:根据元素的关键字直接算出元素的存储地址,优点是检索,删除增加元素速度都很快,缺点是,如果散列函数不好的话可能出现存储单元的冲突,解决的话会增加时间和空间的开销

数据的运算

运算的定义是根据逻辑结构的,指出运算的功能,运算的实现是根据存储结构的,指出运算的基本步骤
例题

链式存储设计时,结点内的存储单元地址是(A)
A.一定连续 B.一定不连续
C.不一定连续 D.部分连续,部分不连续

解析:链式存储设计时,各个结点的存储空间可以不连续,但是结点内的存储单元地址一定是连续的

算法的基本概念

算法是对特定问题的一种求解步骤,是指令的有限序列,其中每一条指令有一条或多条操作
算法的五大重要特性
1.有穷性
2.确定性:不会产生二义性,相同的输入只能有相同的输出
3.可行性
4.输入
5.输出
一个好的算法有下面的特点:
正确性,可读性,健壮性和效率与低存储量需求

时间复杂度

(1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。
(2)时间复杂度 在刚才提到的时间频度中,n称为问题的规模,当n不断变化时,时间频度T(n)也会不断变化。但有时我们想知道它变化时呈现什么规律。为此,我们引入时间复杂度概念。 一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。

解析:选C,n始终为问题规模,时间频度与n^2成正比

解析:选B


解析:选A
算法原地工作是指辅助空间为常量
算法的时间复杂度不是程序具体执行时间,不可以赋予n一个特殊的值

空间复杂度

一个算法的空间复杂度(Space Complexity)S(n)定义为该算法所耗费的存储空间,它也是问题规模n的函数。渐近空间复杂度也常常简称为空间复杂度。

2019数据结构考研(一)相关推荐

  1. 2019数据结构考研复习指导习题代码(王道论坛)

    2019数据结构考研复习指导习题代码(王道论坛) 1.从顺序表删除具有最小值的元素(假设唯一)并由函数返回被删除元素的值.空出的位置由最后一个元素补充,若顺序表为空则显示出错信息并退出运行. bool ...

  2. 2019数据结构考研(三)------栈和队列

    栈和队列 知识架构 栈 栈的基本概念 栈的定义:栈是一种只允许在一端进行插入或者删除的线性表(后进先出的线性表) 栈顶:栈中允许插入和删除的一端 栈底:固定的 空栈 栈的顺序存储结构 栈的顺序表示 # ...

  3. 2019华东师大考研实录 初试+复试(计专) 3个月考上985

    考试完了,已经拟录取了,为了回报前辈们在备考阶段给的无数资料和支持,现在也将自己的经验写一份,留给下一届和以后的考生,也算回报社会了.希望未来的考生们加油努力,能从我们的经验中收获到属于自己的成功. ...

  4. 计算机考研的意义,2019计算机考研数据结构复习:重要意义

    2019考研复习正在紧张的进行中,为了更好的帮助同学们学习.新东方在线为大家整理了"2019计算机考研数据结构复习:重要意义"的相关信息,提醒各位考生要合理安排复习时间,做好复习规 ...

  5. 计算机科学研究生规划,2019计算机考研备考:计算机科学与技术研究方向及复习规划...

    考研之路永远都不是轻松着度过的,想要在这条道路上稳稳妥妥的走完,并到达设立在远处的目标,了解目标专业的各项考研备考信息是第一步.新东方在线为大家整理了2019计算机考研备考:计算机科学与技术研究方向及 ...

  6. 854计算机专业基础,东华大学2019年考研854计算机及软件工程专业基础综合考试大纲...

    考研大纲是考研学生复习的重要参考资料之一,它给出了考试的大致范围,便于考生对相关内容进行重点复习.下面是研招网小编为大家整理的东华大学2019年考研854计算机及软件工程专业基础综合考试大纲,以供大家 ...

  7. 2019计算机考研大纲考什么,2019计算机考研大纲解析

    2019考研大纲已发布,新大纲变化如何?有哪些增改考点需要注意?后续复习该如何调整?新东方在线考研名师团队及时为大家解析大纲变化,传授备考攻略.更多2019考研英语大纲.考研政治大纲.考研数学大纲.考 ...

  8. 2019计算机考研大纲考什么,2019计算机考研大纲有哪些变动

    9月15大纲发布日,2019计算机考研大纲正式公布,对于新大纲较于之前有什么变动是我们所关心的.来和中公考研小编一起看看新的计算机考研大纲有什么变动吧,掌握新动态,变被动为主动! 2019考研计算机大 ...

  9. 曲师计算机考研内容,2019计算机考研大纲试卷内容

    以下是新东方在线整理的2019计算机考研大纲试卷内容,请参考: 一.数据结构 数据结构作为核心内容应该是算法,所以大家在后续复习的时候,比如说线性表的算法,树好二叉树的算法,图的算法,这些算法是希望大 ...

最新文章

  1. oracle子查询不减少数据,Oracle性能优化-子查询到特殊问题
  2. 长方形与圆最近连线LISP_常见图形,圆形、长方形和正方形面积的计算
  3. 深入理解Python的With-as语句
  4. C# IL DASM 使用
  5. 深入浅出python机器学习_7.1_支持向量机
  6. MySQL前缀索引与覆盖索引:前缀索引对于索引精简 覆盖索引对于查询数据索引化
  7. 20155238 实验四 Android程序设计
  8. path:path在路由中的使用
  9. POJ 2240 Arbitrage(判正环)
  10. 26.0.0-alpha1_WildFly 8.0.0.Alpha1的发布和一些历史
  11. 产品经理思维模型:从品牌营销的角度看用户
  12. 高中生用付款截图吃霸王餐近一年 网友:支付宝进来推销
  13. leetcode探索二叉树(一)
  14. 数学建模教程:GSpan-频繁子图挖掘算法
  15. 大数据学习笔记60:构建Spark机器学习系统
  16. java运维工程师简历模板_系统运维工程师个人个人简历模板.doc
  17. SIM900A模块发送AT指令“ AT+CPIN? “返回“ PH-NET PIN ”的解决方法
  18. 802.1Q封装的VLAN数据帧格式
  19. 文本选择毒战:我的过度阐释
  20. Android10.0 Binder通信原理(十)-AIDL原理分析-Proxy-Stub设计模式

热门文章

  1. CAD Converter转PDF的使用
  2. Delphi:文本朗读器--文本转语音(基于百度TTS语音库)
  3. 老毛子、华硕固件USB连接打印机,普通打印机变无线打印机
  4. 计算机仿真技术-基于matlab的电子信息类课程课后答案,计算机仿真技术——基于MATLAB的电子信息类课程(第3版)...
  5. iOS实现浮动泡泡功能,悬浮泡泡,windows系统屏幕保护程序的气泡功能(碰撞检测)
  6. 核芯国产高压运放CLA4031/ CLA4032
  7. bootstrap表格 行编辑状态_JS表格组件BootstrapTable行内编辑解决方案x-editable
  8. Eclipse如何开发Android?
  9. .jar文件如何打开_如何干净的清除Windows系统中指定文件的默认打开方式?
  10. 初识Node使用模板引擎实现Apach