栈
定义
栈 :是限定在表的一端进行插入和删除运算的线性表,通常将插入、删除的一端称为栈顶,另一端称为栈底。不含元素的空表称为空栈。
运算
栈的运算:
① 置空栈:构建一个空栈S
② 判栈空:若栈S为空栈,则返回TRUE,否则返回FALSE
③ 判栈满:若栈S为满栈,则返回TRUE,否则返回FALSE
④ 进栈:将元素x插入S栈的栈顶
⑤ 退栈:若栈S为非空,则将S的栈顶元素删除,并返回栈顶元素
⑥ 取栈顶元素:若S栈为非空,则返回栈顶元素,但不改变栈的状态
在运算这方面呢,更多的可能是上机操作的讲解,但是书上的内容我看不懂,代码的问题老师这节分享课也还没有讲解,所以只是了解一下这几种运算方式的含义。
顺序存储
这节分享课了解最多的就是栈的顺序出栈入栈的读图以及了解它的后进先出原则
对于一个栈,给出输入序列为abc,试写出全部可能的输出序列。
分析 :因为栈是受限在一端输入或输出,而且有“后进先出”的特点,所以有以下几种情况:
(1)a进 a出 b进 b出 c进 c出 产生输出序列abc
(2)a进 a出 b进 c进 c出 b出 产生输出序列abc
(3)a进 b进 b出 a出 c进 c出 产生输出序列bac
(4)a进 b进 b出 c进 c出 a出 产生输出序列bca
(5)a进 b进 c进 c出 b出 a出 产生输出序列cba
下图就是一个进栈和出栈的示意图,先进后出,在栈顶的先出
链式存储
链式存储结构的出现 为了克服由顺序存储分配固定空间所产生的溢出和空间浪费问题
对于链式存储,这节课主要了解到的内容就是相对于顺序存储来说,链式存储比较自由无拘束,元素可以存储在有空闲的位置然后后面指向它的地址值就可以,对于举例,我还不太了解这个怎么阐述,所以链式存储暂不做图文说明,后续了解到更多的以后可以再说明一下。