框架

线性表

操作受限(逻辑结构相同,均是线性表)

数组


队列

一维数组

多维数组

顺序栈

链栈

共享栈

循环队列

链式队列

双端队列

 

压缩矩阵

稀疏矩阵

定义:只允许在一端进行插入删除操作。(先进后出)

(n个元素依次入栈,出栈序列个数为 

systemverilog 队列作为task参数 队列tag数据成员_顺序栈


顺序栈,数组存。链栈,链表存。

共享栈,两个栈共用一块一维数据区间。一个从头开始,一个从尾开始。共享栈是为了有效利用存储空间,两个栈的空间相互调节,只有在整个存储空间被占满时才上溢,存取数据时间复杂度均为O(1)。

队列

定义:一种操作受限的线性表,只允许在表的一端进行插入,另一边进行删除(先进先出)

1)顺序存储

两个指针,一个指头一个指尾。

   循环队列。

(具体的判空满的条件与指针具体指的位置有关。)

  • 牺牲一个单元来区分队空队满。
  • 类型中增设表示元素个数的数据成员。
  • 类型中增设tag数据成员,front==rear时,tag==0,队空,tag==1,队满

2)队列链式存储。

同时带有队头指针和队尾指针的单链表。

3)双端队列

定义:两头即可入亦可出的队列。

安序入a(1,2,3,...,n)

输出受限的双端队列:在一端即可入亦可出,另一端只可入的双端队列。(输出的结果不可能,大的在两个比他小的元素中间。例:4132,4231)

输入受限的双端队列:在一端即可入亦可出,另一端只可出的双端队列。(输出的结果不可能,先中间后两边。例:4213,4231)

栈的应用:

括号匹配

后缀表达式(这算是一个重难点了,但是把握一点,给运算符号赋个值,作为优先级,优先级大的先运算。)

操作符

#


*,/

+,-


isp(in stack priority)

0

1

5

3

6

icp(in coming priority)

0

6

4

2

1

队列应用:

层序遍历