栈:只允许在一端进行插入删除的线性表
栈顶:线性表允许进行插入删除那一端
栈底:固定的,不允许进行插入删除的那一端
空栈:不含任何元素的空表
栈的基本操作:初始化空栈,判空,进出栈,读栈顶元素,销毁栈(操作特性:后进先出)
队列:只允许在表的一端插入,另一端删除的线性表(操作特性:先进先出)
栈和队列的顺序存储
顺序栈:分配一块连续的存储单元存储栈中的元素,并附设一个指针
顺序队列:分配一块连续的存储单元存储队列中的元素,并附设两个指针
循环队列:把存储队列元素的表从逻辑上视为一个环
栈和队列的链式存储
链栈:采用单链表实现,并且规定所有操作都是在单链表的表头实现的,且不存在栈满上溢的情况,没有头结点
链式队列:一个同时带有队头指针和队尾指针的单链表
共享栈:利用栈底位置相对不变的特性,让两个顺序栈共享一个一维数组空间,将两个栈的栈底分别设置在共享空间的两端,两个栈顶向共享空间的中间延伸
双端队列:两端都可以进行入队和出队操作的队列
因为栈和队列都是受限的线性表,因此对线性表的操作对他们不一定适用
数组:由n个相同类型的数据元素构成的有限序列,是线性表的推广
特殊矩阵的压缩存储:对称阵,上(下)三角矩阵,对角矩阵等
压缩存储:为多个值相同的元素只分配一个存储空间,对0元素不分配存储空间。其目的是节约存储空间
稀疏矩阵:矩阵中非零元素个数t相对于矩阵元素个数s非常少,即s>>t(1/10)