文章目录
前言
终于开始这个大工程了——数据结构。
数据结构是每一个合格程序员所必须具备的知识学科!
大一下时候开这门课本身是没有什么问题的,但是由于其重要性并没有得到认识与理解,就变成了为了不挂科和求绩点的考试。
为了分数而学的数据结构没有任何意义,真正学会的数据结构必定该是能熟练应用的。
这次回炉再造正是基于上边的认识开始,同时重视理论与实践,作为2019考研路上的陪伴吧!
头铁点,基于清华大学严蔚敏教授的《数据结构(C语言版)》一书,当时学的时候看不懂,现在回过头来看一看,,,总算是能当成地球语言了。
书没有问题,有问题的是当年看书的自己。
基本概念
- 数据:所有能被输入到计算机中,且被计算机处理的符号的集合,是计算机操作对象的总称
- 数据元素:数据中的个体,数据结构中讨论的基本单位,是数据项的集合
- 数据项:数据结构讨论的最小单位
- 数据结构:带结构的数据元素的集合
数据的逻辑结构
主要分类
- 线性结构
- 树形结构
- 图状结构
- 集合结构
数据结构的形式定义
数据结构是一个二元组
Data_Structures = (D,S)
- D是数据元素的有限集
- S是D上关系的有限集
数据的存储结构
又被称为逻辑结构在存储器中的映像
- 数据元素映像——二进制数字
- 关系的映像——<x,y>
顺序映像:用存储为的相邻表示后继关系
链式映像:用附加信息(例如指针)表示后继关系
数据类型(data type)
分类(按“值”的不同)
- 简单型
- 结构类型
抽象数据类型(abstract data type,ADT)
- 定义:指一个数据结构及其
- 表示方法:三元组(D,S,P)
- D:数据对象
- S:D上的关系集合
- P:对D的基本操作集
算法与算法分析
五个重要特性
- 有穷性
- 确定性
- 可行性
- 输入
- 输出
设计要求
- 正确性 (需要可以实现需求)
- 可读性
- 健壮性
- 效率与低存储量需求
度量标准
- (渐进)时间复杂度(记作T(n)=O(n3))
- 空间复杂度(记作S(n)=O(f(n)))
总结
C语言用来实现数据结构时,往往需要使用其结构体struct,完成抽象数据类型(ADT)的模式,这也对应面向对象语言的class类这一概念,后边在实现数据结构时,C语言只能使用struct来做,而JAVA、Python这些语言则要使用类来实现。
绪论只是开始,讲讲基本的概念和思想,后边才是重点。