八、栈

(一)、逻辑结构

是一种只能在一端进行插入或删除操作的线性表。栈也称为后进先出表

数据结构(知识点碎片六)_链栈

栈抽象数据类型=逻辑结构+基本运算(运算描述)

栈的几种基本运算如下:

数据结构(知识点碎片六)_顺序栈_02

若算出栈序列p可能取值的个数,逆向思维哪些值不可能在p序列出栈(绝不可能是p已出栈的值)。

 (二)、存储结构

输出序列:由出栈序列判断栈容量(将入栈出栈过程模拟出来)。

出栈序列和上一个出队序列一致

数据结构(知识点碎片六)_链栈_03

出栈序列是上一个出栈序列相逆

数据结构(知识点碎片六)_入栈_04

求以某元素为出栈开头的序列个数,主要看未进栈元素如何插空。

若入栈序列是一个升序序列,其栈顶元素一定大于其下方的元素;如果最后一个入栈的元素第一个出栈,那其余元素的出栈序列就是固定的。

数据结构(知识点碎片六)_入栈_05

已知第n位出栈序列的值,求第n+1位出栈序列的值,可逆向思维哪些值不可能出现(绝不可能是已出栈的值)

数据结构(知识点碎片六)_顺序栈_06

n个不同的元素通过一个栈产生的出栈序列的个数为卡特兰数。

数据结构(知识点碎片六)_链栈_07

栈中数据元素的逻辑关系呈线性关系,所以栈可以像线性表一样采用顺序存储结构进行存储(即分配一块连续的存储空间来存放栈中元素,并用一个变量如top指向当前的栈顶元素以反映栈中元素的变化),也可采用链式存储结构。