复习:
《大话数据结构》
1、什么是数据结构
专门研究数据之间关系和操作的学科,而非计算方法
数据结构+算法=程序
2、逻辑结构和物理结构
逻辑结构:
集合: 除了同属一个集合之外,数据之间没有任何关系
线性结构: 数据之间存在一对一的关系
树型结构: 数据之间存在一对多的关系
图型结构: 数据之间存在多对多的关系
物理结构:
顺序结构:数据存在连续的内存中,使用数据之间的相对位置表示数据之间的关系
链式结构:数据存储在不确定位置的内存中,数据项中有一块指针域,用来表示数据之间的关系
3、线性表结构
顺序表:数组
链式表:链表
常见的面试题:数组与链表的优缺点?
4、功能受限的表结构
栈:只有一个出入口,先进后出
有四种顺序栈名称:
空增栈:
top初值:0 先入栈,再top++
满增栈:
top初值:-1 先top++,再入栈
空减栈:
top初值:cal-1 先入栈,在top--
满减栈:
top初值:cal 先top--,再入栈
队列:有两个出入口,队尾进,队头出,先进先出
封装链表:
1、单链表
之前的没封装过的单链表,尾添加效率低、非法位置的判断效率低
节点:
数据域
指针域
单链表结构:
头指针 (带头节点)
尾指针
节点数量
2、静态链表
节点:
数据域
游标
静态链表的节点存储在连续的内存中,通过游标来访问下一个节点
这种链表没有指针域,在插入、删除时通过修改游标的值完成,而不需要动态申请、释放内存,但是也可以实现链式的效果
但是它牺牲了随机访问的功能,而且也缺少真正链式表的全部优点
3、循环链表
链表的最后一个节点的next不再指向NULL,而是指向头节点,这种链表称为单向循环链表,简称循环链表,它的优点是可以通过任意节点遍历整个链表
4、双向循环链表
节点:
前趋指针
数据
后继指针