复习:
1、什么是数据结构
是专门研究数据关系和操作的学科,而非计算方法
数据结构+算法=程序
2、逻辑结构与物理结构
逻辑结构:
集合:除了同属于一个集合,数据之间没有任何关系
表:数据之间存在一对一的关系
树:数据之间存在一对多的关系
图:数据之间存在多对多的关系
物理结构:
顺序结构:数据存储在连续的内存中,可以使用数据的相对位置来表示数据之间的关系
链式结构:数据分散地存储在内存的任何位置,通过数据项中有一项指针域用来表示数据之间关系
逻辑结构与物理结构的对应关系:
表:顺序 链式
树:链式 顺序
图:顺序+链式
考点:数据和链表的优缺点?
3、数据结构的运算
创建、销毁、清空、添加、删除、查询、访问、修改、排序、遍历
4、表结构
顺序表: 数组
链式表: 链表
5、功能首先的表结构
栈: 只有一个进出口,先进后出
四种顺序栈:
top初值:0 入栈 top++ 空增栈
top初值:-1 top++ 入栈 满增栈
top初值:cal-1 入栈 top-- 空减栈
top初值:cal top-- 入栈 满减栈
队列: 有两个端口,一个只能入队,一个只能出队,先进先出
注意:栈、队列的功能受限、只能操作栈顶或队头队尾,除此之外操作其他任何元素都是非法的
常见的笔试题:
1、判断出栈顺序是否为真
2、两个栈模拟一个队列
从栈1到栈2必须一个不留
栈2不空,栈1不能到栈2
封装链表:
尾添加的效率低、非法下标的判断效率也非常低
1、单链表
结点:
数据域
指针域
单链表数据项:
头结点
尾结点
结点数量
2、静态链表
结点:
数据域
游标
静态链表的结点存储在连续的内存中,通过游标来访问下一个结点
这种链表在插入删除时时需要修改游标的值,而不用申请、释放结点内存就可以达到类似链式结构的效果
牺牲了随机访问的功能、也没达到链表动态申请内存的效果,只是给没有指针的编程语言实现链表的一种方式,适用范围不大
3、循环链表
链表的最后一个结点的next不再指向NULL,而是指向头结点,这种链表称为单向循环链表,简称循环链表,它好处是可以通过任意结点来遍历整个链表
4、双向链表
结点:
前驱指针 prev
数据域
后继指针 next