目录
第三章:线性表
0个或多个数据元素的有限序列
顺序存储结构(数组)
用一段地址连续的存储单元依次存储线性表的数据元素
优点
- 可以快速存取表中任一元素
- 无须为表示表中元素之间的逻辑关系增加额外的存储空间
缺点
- 插入和删除要移动元素
- 造成存储空间碎片
- 线性表长度变化较大的时候,难以确定存储空间的容量
链式存储结构
单链表
存储数据元素信息的域称为数据域
存储直接后继位置的域称为指针域
数据域和指针域里的内容合起来叫节点
每个节点中只包含一个指针域,叫做单链表
读取
p->data
插入
1. s->next = p->next; 先连接尾部
2. p->next = s 头部替换
顺序不可换
删除
p->next = p->next->next 下一个节点指针等于下下一个节点指针
对于插入或者删除数据越频繁的操作,单链表的效率优势就越明显。
整表创建
- 头插法
- 尾插法
整表删除
从头删除
俩种类型的线性表的优缺点以及选择依据
- 如果频繁查找,很少插入删除——用顺序结构
- 如果频繁插入删除——用单链表结构
- 如果实现不知道元素个数,或者元素个数变化较大用单链表
静态链表
用数组描述的链表叫做静态链表
优缺点
循环链表
将单链表中终端节点的指针端由空指针改为指向头结点,这种头尾相接的单链表称为单循环链表
双向链表
在单链表的每个节点中,再设置一个指向其前驱节点的指针域
第四章:栈和队列
栈(类比手枪弹夹)
栈是限定仅在表尾(栈顶)进行插入和删除操作的线性表,允许数据插入删除的一端为栈顶,另一端为栈底
栈的应用1——递归
把一个直接调用自己活着通过一系列的调用语句间接调用自己的函数称为递归函数
由于递归过程的退回顺序是他前行顺序的逆序,符合栈的原则。
斐波那契数列:
F(n)= F(n-1)+F(n-2)
栈的应用2——公式解析
把中缀表达式转化为后缀表达式,然后进行对应操作计算结果。
队列(类比排队)
允许一端进行插入操作(队尾),另一端进行删除操作(队头)的线性表,
排在第一个的优先出列,最后来的排在最后。
第五章:字符串
串是由0个或者多个字符组成的有序序列,又名字符串,是一种线性表的扩展
朴素模式匹配算法