数据结构

复习:
1、什么是数据结构
是专门研究数据关系和操作的学科,而非是计算方法。
数据结构+算法=程序
2、逻辑结构和物理结构
逻辑结构:
集合:除了同属于一个集合,数据之间没有任何关系。
表:数据之间存在一对一关系。
树:数据之间存在一对多关系。
图:数据之间存在多对多关系。
物理结构:
顺序结构:数据存在在连续的内存中,使用数据的相对位置来表示数据之间的关系。
链式结构:数据分散存储在内存的任何位置,数据项中有一块指针域用来表示数据之间的关系。
逻辑结构和物理结构的对应:
表:顺序 链式
树:链式 顺序
图:顺序+链式
3、数据结构和运算
创建、销毁、清空、添加、删除、查询、修改、排序、遍历
4、表结构
顺序表:数组
链式表:链表
常见面试题:数组和链表的优缺点?

5、功能受限的表
栈:只有一个进出端口,先进后出。
有四种顺序栈:
top初值:0 入栈 top++ 空增栈
top初始:-1 top++ 入栈 满增栈
top初始:cal-1 入栈 top-- 空减栈
top初始:cal top-- 入栈 满减栈

队列:有两个进出端口,一个只能进,另一个只能出,先进先出。

封装链表:
尾添加的效率低,非法下标的判断也非常低。
1、单链表
节点:
数据域
指针域
数据项:
头指针
尾指针
节点数量
2、静态链表
节点:
数据域
游标
静态链表的节点存储在连续的内存,通过游标来访问下一个节点。
这种链表在插入删除时只需要修改游标的值,而不用申请、释放内存达到链式结构的效果。
但是也牺牲了随机访问的功能,是给没有指针的编程语言实现的一种单链表。
3、循环链表
链表的最后一个节点的next不再指向NULL,面是指向头节点,这种链表叫单向循环链表,简称循环链表,它的好处理就是可以通过任何节点遍历整个链表。
4、双向链表
节点:
前驱指针
数据域
后继指针

5、通用链表
6、Linux内核通用链表