学校的教材是浙大教授陈越的,但是我决定使用的是王道的考研数据结构,在直接进行学习前有必要理清学习的整体思路,这样更有利于理解,当然并不是要求一开始就记住,只是有个印象就行。


既然整本书都有一个框架,那么每一章的知识其实都有一个小框架。


数据结构的基本概念

基本概念和基本术语

数据:数据是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原料。

这里要注意的一点我觉得应该是它的条件,能被输入、识别、处理的符号集合。

数据元素: 数据元素是数据的基本单位,通常作为一个整体进行考虑和处理。一个数据元素可由若干个数据项组成。

数据项:数据项是构成数据元素不可分割的最小单位。

例如,学生记录就是一个数据元素,它由学号、姓名、性别等数据项组成。

数据项 --> 数据元素 --> 数据

数据对象:数据对象是具有相同性质的数据元素的集合,是数据的一个子集。

例如,整数数据对象时集合 {0, ±1,±2 , ... }。

数据项 --> 数据元素 --> 数据对象 --> 数据

数据类型:数据类型是一个值的集合和定义在此集合上的一组操作的总称。

1)原子类型。其值不可再分的数据类型。

2)结构类型。其值可以再分解为若干成分的数据类型。

3)抽象数据类型。抽象数据组织及与之相关的操作。

这里的抽象数据类型的 “抽象”意义在于数据类型的数学特性,其数学特性和具体的计算机或语言无关。

数据结构:数据结构是相互之间存在一种或多种特定关系的数据元素的集合。在任何问题中,数据元素都不是孤立存在的,他们之间存在某种关系,这种数据元素相互之间的关系称为结构。数据结构包含三方面的内容:逻辑结构、存储结构和数据的运算。

数据的逻辑结构和存储结构是密不可分的两个方面,一个算法的设计取决于所选定的逻辑结构,而算法的实现依赖于所采用的存储结构。

这里的关系已经讲的很清楚了,逻辑和存储结构相互依赖,设计算法取决于逻辑结构,实现算法取决于存储结构。

数据结构三要素:逻辑结构、存储结构和数据的运算。

数据的逻辑结构:逻辑结构是指数据之间的逻辑关系,即从逻辑关系上描述数据。它与数据的存储无关,是独立于计算机的。数据的逻辑结构分为线性结构非线性结构,线性表是典型的线性结构;集合、树和图是典型的非线性结构。

集合:集合结构中的数据元素除了同属于一个集合外,它们之间没有其他关系。

线性结构:线性结构中的数据元素之间只存在一对一的关系。

树形结构:树形结构中的数据元素之间存在一对多的关系。

图形结构或网状结构:结构中的数据元素存在多对多的关系。

这些如线性表、数、图都是后面的重点学习内容,现在只做基本了解。

数据的存储结构:存储结构是指数据结构在计算机中的表示(又称映像),也称物理结构。它包括数据元素的表示和关系的表示。数据的存储结构是用计算机语言实现的逻辑结构,它依赖于计算机语言。数据的存储结构主要有顺序存储、链式存储、索引存储和散列存储。

1)顺序存储:把逻辑上相邻的元素存储在物理位置也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现。

优点:可以实现随机存取,每个元素占用最少的存储空间

缺点:只能使用相邻的一整块存储单元,因此可能产生较多的外部碎片

2)链式存储:逻辑上相邻的元素在物理位置上可以不相邻,借助指示元素存储地址的指针来表示元素之间的逻辑关系。

优点:不会出现碎片现象,能充分利用所有存储单元

缺点:每个元素因存储指针而占用额外的存储空间。且只能实现顺序存取

3)索引存储:在存储元素信息的同时,还建立附加的索引表,索引表中的每项称为索引项,索引项的一般形式是(关键字,地址)。

优点:检索速度快。

缺点:附加的索引表额外占用存储空间,增加和删除数据时也要修改索引表,因而会花费较多时间

4)散列存储:根据元素的关键字直接计算出该元素的存储地址,又称哈希(Hash)存储。

优点:检索、增加和删除节点的操作都很快。

缺点:若散列函数不好,则可能出现元素存储单元的冲突,而解决冲突会增加时间和空间开销。

数据的运算:施加在数据上的运算包括运算的定义和实现。运算的定义是针对逻辑结构的,指出运算的功能;运算的实现是针对存储结构的,指出运算的具体操作步骤。

下面记录几个我做错的题目。

1)可以用抽象数据类型定义一个完整的数据结构。

抽象数据类型描述了数据的逻辑结构和抽象运算,通常用数据对象、数据关系、基本操作集这样的三元组来表示,从而构成一个完整的数据结构定义

2)顺序表、哈希表和单链表是三种不同的数据结构,既描述逻辑结构、又描述存储结构和数据运算。而有序表是指关键字有序的线性表,仅描述元素之间的逻辑关系,它既可以链式存储,又可以顺序存储,所以属于逻辑结构。

顺序表:顺序表是线性表的顺序存储。是完整的数据结构

哈希表:哈希表也叫散列表,可知跟散列存储有关。是根据关键码值(Key value)而直接进行访问的数据结构。所以哈希表是一个完整的数据结构。

单链表:单链表是线性表的链式存储。是完整的数据结构

有序表:有序线性表是说线性表中的元素是按照升序或降序(允许相邻元素相同)的方式排列的。本质上还是属于线性表,属于逻辑结构

3)数据的存储结构有顺序存储、链式存储、索引存储和散列存储。循环队列是顺序表表示的队列,是一种数据结构。栈是一种抽象数据类型,只表示逻辑结构。

这里我不做最详细的查阅,只查到一点队列是一种操作受限的线性表,而线性表是一种逻辑结构。栈也是一种线性表。但是循环队列跟队列不完全相同,队列的顺序存储结构(也称循环队列),因此循环队列与存储结构有关。

4)链式存储设计时,结点内的存储单元地址一定连续

小结:其实内容并不多,我认为的难点主要是区分单纯的逻辑结构和完整的数据结构,不过后面的内容都会去仔细深究这些关系,因此这个部分有个印象其实差不多了。

今天作业有点多,就先到这结束了,明天再继续数据结构。

entail v.导致;牵涉;承担需要 n.需要;继承

strip n.长条;条状 v.剥夺;剥去;脱衣

deploy v.部署;有效地利用

bound n.界限;跳跃;限制 a.必定的;有义务的;受约束的

constantly adc.不断地;时常地

compact a.紧密的;紧凑的;简洁的 n.合同;契约;小粉盒 v.使简洁;使紧密结合

deplete v.耗尽;使衰竭

obsess v.使困扰;使着迷

analogy n.类比;类推;相似

tactic n.战术;策略

数据结构[1]--学习--绪论(学习记录)相关推荐

  1. 2018-2019-20172329 《Java软件结构与数据结构》第九周学习总结

    2018-2019-20172329 <Java软件结构与数据结构>第九周学习总结 教材学习内容总结 <Java软件结构与数据结构>第十五章-图 一.图及无向图 1.图的相关概 ...

  2. 《程序设计与数据结构》第四周学习总结

    学号 20172326 <程序设计与数据结构>第四周学习总结 教材学习内容总结 列表与栈,队列的关系与区别 有序列表插入时插入方法 无序列表的区别 Comparable方法的重载 用链表, ...

  3. 20172315 2017-2018-2 《程序设计与数据结构》第九周学习总结

    学号 2017-2018-2 <程序设计与数据结构>第九周学习总结 教材学习内容总结 异常是定义一个非正常情况或错误的对象,由程序或运行时环境抛出. 异常与错误不同,错误代表不可恢复的问题 ...

  4. 数据结构与算法的学习——思维的学习与高屋建瓴

    数据结构与算法的学习--思维的学习与高屋建瓴 一.算法思维的练习 二.练习过程 1.是什么(WHat) 2.怎么用(How) 三.进阶思考 1.栈的思考 2.树的问题 3.关于递归 (1)排列组合问题 ...

  5. 2018-2019-20172321 《Java软件结构与数据结构》第四周学习总结

    2018-2019-20172321 <Java软件结构与数据结构>第四周学习总结 教材学习内容总结 第六章 6.1列表集合 列表集合是一种概念性表示法,其思想是使事物以线性列表的方式进行 ...

  6. 数据结构与算法-链表学习笔记

    数据结构与算法-链表学习笔记 链表的概念 链表是有序的列表. 链表是以节点的方式来存储,是链式存储,它在内存中并不是一定是连续的. 每个节点包含 data 域:存储数据, next 域:指向下一个节点 ...

  7. 20162329张旭升 2016-2017-2 《程序设计与数据结构》第九周学习总结

    20162329张旭升 2016-2017-2 <程序设计与数据结构>第九周学习总结 教材学习内容总结 1.建立数据库连接:我们是通过老师给的XAMPP程序来配置自己的数据库,然后根据教程 ...

  8. 20172304 《程序设计与数据结构》第九周学习总结

    20172304 <程序设计与数据结构>第九周学习总结 教材学习内容总结 本章是第十五章,主要介绍了图的概念. 首先我来介绍一下图的基本结构. 从逻辑上讲,图是由边和结点组成的,在我的理解 ...

  9. eclipse在网页进入时显示重定向过多_使用eclipse快速开发jsp以及编码问题、jsp页面元素、request对象学习的粗略记录...

    人老了真是什么都会忘记啊orz,早上发现学过去的东西好多都还没记录复盘... ...(懒虫作祟) 在开始之前,俺认为还是很有必要了解一下jsp的执行流程,俺发现CSDN上的"陈小哥cw&qu ...

  10. 20172310 2017-2018-2 《程序设计与数据结构》第四周学习总结

    20172310 2017-2018-2 <程序设计与数据结构>第四周学习总结 教材学习内容总结 第四章 类结构.实例数据.形式参数.实际参数这些概念实在是很容易混淆,一开始我都完全不知道 ...

最新文章

  1. oracle 取日期 加天,oracle日期,获取年月日等函数、日期函数、时区
  2. linux解压tar到目录,在Linux系统中将tar文件解压到不同的目录中的教程
  3. 电脑系统哪个最好用_什么除湿机好用_家用除湿机哪个牌子最好用-装修攻略
  4. linux分配iomem,Linux中__iomem
  5. 金额数字转中文大写(转)
  6. 函数调用过程实例详解
  7. android9开发者模式 s8,Android 9.0或加速Galaxy S8/9电池消耗 谨慎更新
  8. 转载 树莓派vnc 教程
  9. 不了解这些“高级货”,活该你面试当炮灰。。。【石杉的架构笔记】
  10. LVM逻辑卷管理学习
  11. 0x01-1 原码 反码 补码 概念 原理 详解
  12. java新增mysql时 中文出现_Java项目往数据库中插入数据,出现中文乱码
  13. jstree取消勾选_zTree 节点勾选取消勾选 选中取消选中
  14. 简述P问题,NP问题,NP完全问题以及NP Hard问题
  15. GPT分区规划与各分区作用解析
  16. 因为相信所以看见,既然看见注定坚信《6》
  17. CSDN学院 免费技术答疑公开课,本周六场即将开播~~~
  18. Matlab(将2维图片显示成3维图形)
  19. android 模拟器目录,Android 获取APP 文件目录 模拟器检测
  20. 用计算机专业起情侣网名,带对方名字的情侣网名最新精选

热门文章

  1. c++ 之 在VS中添加lib的4种方法
  2. bzoj1669 Hungry Cows
  3. 信息检索(Information Retrieval)相关概念
  4. 弹性法计算方法的mck法_SAM4E单片机之旅——9、UART与MCK之MAINCK
  5. 55个用于搜索引擎优化的小技巧
  6. 【工具】Linux--word转PDF工具大全
  7. java转义字符的print输出
  8. C Primer Plus (第6版) 读书笔记_Chapter 2
  9. SOUI视频教程 官方论坛
  10. 多元融合 浪潮G7系列超融合一体机重磅发布