Xmind思维导图下载
描述
- 数据结构是相同性质的数据元素的集合
- 数据结构三要素是逻辑结构、存储结构、数据的运算
- 逻辑结构包括集合、线性结构、树形结构、图状结构
- 集合:元素间无特殊的联系
- 线性结构:元素间只有一对一的联系
- 树状结构:元素间有一对多的联系
- 图状结构:元素间存在多对多的联系
- 线性结构包括栈、队列、串、数组、线性表
- 树状结构包括一般树和二叉树
- 图状结构包括有向图和无向图
- 栈,只能从一边进行插入和删除,先进后出
- 队列,只能从尾部插入,从头部删除,先进先出
- 数组,每个元素的大小相同
- 栈分为顺序栈、链栈和共享栈
- 队列分为顺序队列、链式队列、双端队列、循环队列
- 数组分为可压缩矩阵和稀疏矩阵
- 线性表分为顺序表、单链表、双链表和静态表
- 树形结构分为逻辑结构和存储结构
- 逻辑结构分为满二叉树、完全二叉树、二叉排序树和平衡二叉树
- 存储结构分为顺序二叉树和链式二叉树
- 数据结构三要素的结构分为顺序存储、链式存储、哈希存储、索引存储
- 顺序存储
- 逻辑上相邻,物理上也相邻
- 可以随机存取
- 元素内部空间可以充分利用,但是可以产生外部碎片
- 链式存储
- 逻辑上相邻,物理上可以不相邻
- 只能顺序存取
- 元素内部指针域浪费空间,但是不会产生外部碎片
- 哈希存取
- 根据关键字计算元素地址
- 增删改查快
- 散列函数不好,可能产哈希冲突
- 索引存储
- 根据索引表查找元素地址
- 增删慢,改查快
- 索引表额外占空间
主要结构体
- 静态顺序表
#define MaxSize 50
typedef struct {
ElemType data[MaxSize];
int length;
}SqList;
- 动态顺序表
#define InitSize 100
typedef struct{
ElemType *data;
int MaxSize,length;
}SeqList;
- 单链表
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
- 双链表
typedef struct DNode{
ElemType data;
struct DNode *prior,*next;
}DNode,*Dlinklist;
- 顺序栈
#define MaxSize 50
typedef struct{
Elemtype data[MaxSize];
int top;
}SqStack;
- 链栈
typedef struct Linknode{
ElemType data;
struct Linknode *next;
}*LiStack;
- 顺序队列
#define MaxSize 50
typedef struct {
ElemType data[MaxSize];
int front,rear;
}SqQueue;
- 二叉树的链式存储
typedef struct BiTNode{
ElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
- 线索二叉树
typedef struct ThreadNode{
ElemType data;
struct ThreadNode *lchild,*rchild;
int ltag,rtag;
}ThreadNode,*ThreadTree;