什么是数据结构
什么是数据?
数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。
就是图书馆中所有的书
数据对象:是性质相同的数据元素的集合,是数据的子集。
其实就是某一类书
数据元素:是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理。也被称为记录。
就是书。
数据项:一个数据元素可以由若干个数据项组成。
其实就是书名、作者、出版社啥的….
什么是结构?
逻辑结构、物理结构。
逻辑结构是指数据对象中数据元素之间的相互关系。包括集合结构、线性结构、树形结构、图形结构。
- 集合结构:集合结构中的数据元素除了同属于一个集合外,它们之间没有其它关系
- 线性结构:线性结构中的数据之间是一对一的关系
- 树形结构:树形结构中的数据之间存在一种一对多的层次关系
- 图形结构:图形结构的数据元素是多对多的关系。
物理结构:是指数据的逻辑结构在计算机中的存储形式。顺序存储和链式存储。
- 顺序存储:是把数据元素存放在地址连续的存储单元里。
- 链式存储:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。
什么是数据结构?
- 数据结构是数据对象,以及存在于该对象的实例合组成实例的数据元素之间的各种联系。这些联系可以通过定义相关的函数来给出。。。一个数据对象是实例或值的集合
- 数据结构是 ADT(抽象数据类型Abstract Data Type) 的物理实现。
- 数据结构是相互之间存在一种或多种特定关系的数据元素的集合
- 数据结构包括数据对象集以及它们在计算机中的组织方式,即它们的逻辑结构和物理存储结构,同时还包括与数据对象集相关的操作集,以及实现这些操作的最高效的算法。
什么是算法?
算法是解决问题步骤的有限集合,通常用某一种计算机语言进行伪码描述。通常用时间复杂度和空间复杂度来衡量算法的优劣。
算法的五大特征:输入、输出、有穷性、确定性、可行性
输入:零个或多个输入。
输出:一个或多个输出。
有穷性:有限步骤后在可接受时间内完成。
确定性:每个步骤都有确定含义,无二义性。
可行性:每一步都是可行的。
算法设计要求:正确性、可读性、健壮性、时间效率高和存储低。
正确性:有输入输出,无二义性,有正确答案。
可读性:方便阅读。
健壮性:输入不合法能处理
时间效率高和存储低:时间空间复杂度越低越好。
什么是栈和队列
栈是一种特殊的线性表。其特殊性在于限定插入和删除数据元素的操作只能在线性表的一端进行
结论:后进先出(Last In First Out),简称为LIFO线性表
队列(Queue)也是一种运算受限的线性表,它的运算限制与栈不同,是两头都有限制,插入只能在表的一端进行(只进不出),而删除只能在表的另一端进行(只出不进),允许插入的一端称为队尾(rear),允许删除的一端称为队头 (Front)
结论:队列的操作原则是先进先出的,所以队列又称作FIFO线性表(First In First Out)
栈和队列的顺序存储和链式存储
由于栈也是线性表,因此线性表的存储结构对栈也适用,通常栈有顺序栈和链栈两种存储结构,这两种存储结构的不同,则使得实现栈的基本运算的算法也有所不同。
在顺序栈中有"上溢"和"下溢"的概念。链栈则没有上溢的限制。
队列也有顺序存储和链式存储两种存储结构,前者称顺序队列,后者为链队。
队列的顺序存储