八、栈
(一)、逻辑结构
栈是一种只能在一端进行插入或删除操作的线性表。栈也称为后进先出表。
栈抽象数据类型=逻辑结构+基本运算(运算描述)
栈的几种基本运算如下:
若算出栈序列p可能取值的个数,逆向思维哪些值不可能在p序列出栈(绝不可能是p已出栈的值)。
(二)、存储结构
输出序列:由出栈序列判断栈容量(将入栈出栈过程模拟出来)。
出栈序列和上一个出队序列一致
出栈序列是上一个出栈序列相逆
求以某元素为出栈开头的序列个数,主要看未进栈元素如何插空。
若入栈序列是一个升序序列,其栈顶元素一定大于其下方的元素;如果最后一个入栈的元素第一个出栈,那其余元素的出栈序列就是固定的。
已知第n位出栈序列的值,求第n+1位出栈序列的值,可逆向思维哪些值不可能出现(绝不可能是已出栈的值)
n个不同的元素通过一个栈产生的出栈序列的个数为卡特兰数。
栈中数据元素的逻辑关系呈线性关系,所以栈可以像线性表一样采用顺序存储结构进行存储(即分配一块连续的存储空间来存放栈中元素,并用一个变量如top指向当前的栈顶元素以反映栈中元素的变化),也可采用链式存储结构。