目录
前言
本博客为本人在学习数据结构路途上的一些学习心得,如觉得对有你有所帮助,还希望留下一个赞。由于博主只是一名大一新生,如果博文中出现错误,欢迎指正。如果想要转载,附上链接就行。
一、初步了解数据结构
相信很多人都听说过这样一个公式“程序=数据结构+算法”。这句话来自Pascal语言之父——Nicklaus Wirth,直接展示出了程序的本质。那么什么是数据结构呢?粗略的来说就是互相之间存在一种或多种特定关系的数据元素集合,或者也可以说是带结构的数据元素的集合。至于数据元素是什么会在下文讲述。
二、数据结构在编程中的功能
我们编写程序解决实际问题时,通常分为三个步骤:
1、分析问题并抽象为数学模型。
2、设计算法处理数学模型。
3、编写程序。
在把问题抽象为数学模型的过程中,我们会在分析问题之后提取出问题之中的操作对象(需要进行操作的对象,例如在一个酒店客房管理系统,酒店的客房就是我们的操作对象),寻找操作对象之间的关系,用数学语言进行描述,最后的产物就是数据结构。
编程的本质就是我们使用算法对数据结构进行处理。
三、数据结构中的基本概念
(如果在以下描述中对于这些基本概念不太清楚可以看小结中的图示)
1、数据
概念:能输入计算机且能被计算机处理的符号的集合
特征:
- 信息的载体
- 客观事物符号化的表示
- 能被计算机识别,储存和加工
类型:
- 数值类的数据:正数,小数等拥有具体数值的数据。
- 非数值类的数据:声音、图像、文字等没有具体数值的数据。
2、数据元素(也称记录、结点或顶点。)
概念:数据的基本单位
特征:
- 由若干个数据项组成
- 在计算机程序中通常作为一个整体来考虑
3、数据项
概念:数据元素中不可分割的最小单位
数据、数据元素、数据项之间的关系:数据>数据元素>数据项
4、数据对象
概念:性质相同的数据元素的集合,是数据的子集
实例:
- 字符串数据对象是字符数据元素的集合C={'H' , 'e' , 'l' , 'l' , 'o' , '!' , '\0'}
- 学生信息表也是一个数据对象
5、数据、数据元素、数据项、数据对象图示小结
6、数据结构
基本概念:
- 互相之间存在一种或多种特定关系的数据元素集合
- 带结构的数据元素的集合。
主要内容:
- 逻辑结构:数据元素之间的逻辑关系。
- 物理结构(存储结构):数据元素及其关系在计算机内存中的表示(映象)。
- 运算和实现:对数据元素施加的操作以及这些操作在相应储存结构上的实现。
数据结构的逻辑结构和物理结构(存储结构)介绍
- 逻辑结构
- 概念:数据元素之间的逻辑关系
- 特点:独立于计算机,与数据的存储无关
- 物理结构(存储结构)
- 概念:数据元素及其关系在计算机中的结构(存储方式)
- 特点:存储于计算机之中,关系到数据元素的实际操作
7、数据结构的逻辑结构
逻辑结构的种类(划分方式一)
- 线性结构
- 特点:有且仅有一个开始和一个终端结点,并且所有结点都最多只有一个直接前趋和一个直接后继。
例如:线性表、栈、队列、串
-
非线性结构
- 特点:个结点可能有多个直接前趋和直接后继。
- 例如:树、图
逻辑结构的种类(划分方式二)
- 集合结构
特点:结结构中的教据元素之间除
了同属于一个集合的关系外,无任
何其它关系。
- 线性结构
特点:结构中的数据元素之间存在
着一对一的线性关系。
- 树形结构
特点:结构中的数据元素之间存在
着一对多的层次关系。
- 图状结构
特点:结构中的数据元素之间存在
着多对多的任意关系。
8、数据结构的存储结构
顺序存储结构
- 用一组连续的存储单元依次存储数据
元素,数据元素之间的逻辑关系由元
素的存储位置来表示。 - C语言中用数组来实现顺序存储结构。
链式存储结构
- 用一组任意的存储单元存储数据元素
,数据元素之间的逻辑关系用指针来
表示。 - C语言中用指针来实现链式存储结构
索引存储结构
- 在存储结点信息的同时,还建立附加的索引表。
(例如电话簿旁边的ABCDEF首字母索引) - 索引表的每一项称为一个索引项。
- 索引项的一般形式是:关键字或地址
- 关键字是能唯一标识一个结点的那些数据项。
- 若每个结点在索引表中都有一个索引项,则该索
引表称之为稠密索引。若一组结点在索引表中只
对应一个索引项称之为稀疏索
引。
散列存储结构
- 根据结点的关键字直接计算出该结点的存储地址。
(哈希表)
- 计算出的散列表