Fork me on GitHub

01 绪论

绪论

1.分类

1.1 逻辑结构

Ⅰ 线性结构

① 有且只有一个根结点;
② 每个结点最多只有一个前驱;
③ 也最多只有一个后继;

线性结构指的是数据元素之间存在着“一对一”线性关系的数据结构
是逻辑上一维,不要求内存空间上顺序

线性表:(采用顺序表或链表形式)
:顺序栈<—>链栈
队列:双队列、循环队列<—>链队
​ 串:字符串...
​ 线性数组:普通一维数组、顺序表(采用数组形式,顺序存储结构保存的线性表)...
​ 线性链表:单链表、双向链表...
​ 矩阵
​ 向量:n维向量
​ 二维表

Ⅱ 非线性结构

非线性结构指的是数据元素之间存在着“一对多”非线性关系的数据结构

​ 集合结构
​ 树结构:树、二叉树...
​ 堆:其逻辑结构是(符合某种堆排序的)完全二叉树或近似完全二叉树
​ 图结构:有向图、无向图;邻接表、邻接矩阵...​

​ tips:
​ 数组有非线性数组:二维数组、多维数组;稀疏矩阵...
​ 链表有非线性链表:二叉链表
​ 广义表(线性表的推广,它的数据元素是线性表,但不同构,即或者是单元素或者是线性表)因此广义表本身是非线性结构

带链的栈(链栈)可以用收集计算机存储空间所有的空闲的存储结点,是线性表。
//数组可以是线性结构也可以是非线性结构
//链表可以是线性结构也可以是非线性结构
	首先,一般做到题目,说链表是线性结构的,默认是线性链表
	定义的链表中,若只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。
	在单链表的结点中增加一个指针域指向它的直接前件,这样的链表,就称为双向链表(一个结点中含有两个指针),也是线性链表。
	循环链表具有单链表的特征,但又不需要增加额外的存储空间,仅对表的链接方式稍作改变,使得对表的处理更加方便灵活,属于线性链表。
	二叉链表是二叉树的物理实现,是一个存储结构,不属于线性结构,为非线性结构。
/*广义表是*/线性表的推广(推广部分)属于/*非线性结构*/

1.2 存储结构

Ⅰ 顺序存储

插入、删除运算需要引起大量结点移动,效率不高

顺序表属于线性数组(线性表)的顺序存储结构【是随机存取的存储结构】
​ 顺序队列属于队列(线性表)的顺序存储结构
循环队列属于队列(线性表)的顺序存储结构
​ 完全二叉树属于树的顺序存储结构
​ 稀疏矩阵(三元组法存储)属于非线性结构的顺序存储方式

Ⅱ 链式存储

线性链表/单链表属于线性表的链式存储结构【是顺序存取的存储结构】
​ 链队属于队列(线性表)的链式存储结构
二叉链表属于二叉树的链式存储结构

Ⅲ 索引存储

Ⅳ 散列存储

​ 哈希表

2.其它

​ 链表的每个节点都恰好包含一个指针【错误】
​ 例:双链表的每个节点中包含两个指针

线性表指的是逻辑结构上一维,属于逻辑结构范畴;存储结构上既可以顺序存储,也可以链式存储,
有序表指的是逻辑意义上数据元素的有序,属于逻辑结构范畴;存储结构上既可以顺序存储,也可以链式存储,
顺序表指的是存储结构(内存空间)上顺序存储,属于顺序存储结构,属于存储结构范畴
哈希表指的是存储结构(内存空间)上散列存储,属于散列存储结构,属于存储结构范畴
单链表指的是存储结构(内存空间)上链式存储,属于链式存储结构,属于存储结构范畴
邻接矩阵指的是以数组方式存储图结构的存储结构
邻接表指的是以数组与链表相结合的形式存储图结构的存储结构

​ 二分查找只适合①顺序存储的②有序表

posted @ 2019-10-09 10:31  解尼  阅读(322)  评论(0编辑  收藏  举报