1、栈和队列是受限制的线性表,所以也是A1开始的
2、共享栈,栈底不变,整个空间满了,才会发生上溢(降低上溢的可能性)
3、链栈,在链头处添加删除
4、n个元素进栈,出栈序列种类为
5、队列,可能会出现上溢出,就是对头指针经过删除之后和对尾指针一起指向顺序结构的最后一个空间。
6、循环队列来解决上溢问题,循环队列可以想象为一个圆环,实际上还是一个顺序结构。需要通过%MaxNum来实现定位。同时还需要区分队空和堆满的情况。因为这时候头指针和尾指针都是相同的。
(1)通过闲置一个空间,这时候队满就有尾+1%max =头
(2)设置属性记录对内元素个数,等于max时候,队满
(3)设置队满标志位
7、对应链式队列,删除元素时,如果只有一个元素时候,头尾指针都要修改。
8、队列题中容易设置队中只有一个元素,对头和对尾关系的问题。
9、栈的运用
(1)括号匹配
(2)表达式运算,做题时候可以构建出运算树,然后根据中序和后序遍历对应的中后缀运算。其中中缀运算是包含括号的。
(3)将递归问题拆分为非递归问题
10、队列的应用,层次遍历,缓存区顺序打印问题
11、递归中可能包含很多重复运算,所以效率没有非递归高,但是代码简洁
12、数组是在线性表的定义基础上规定,必须最少有一个元素。
13、特殊矩阵的压缩存储(对称矩阵,三角矩阵,三对角矩阵,稀疏矩阵)
下面计算公式,都是从下标1开始,而不是0
(1)对称矩阵计算公式(仅需n(n+1)/2个空间 ,比三角矩阵少一个存储常量的)
(2)上三角矩阵
(3)下三角矩阵
(4)三对角矩阵,中心的3条对角线的区域,其他区域的元素都为零。
使用行优先的形式存储
(5)疏矩阵的三元组既可以采用数组存储,也可以采用十字链表法存储。