1、什么是堆栈?
通俗来说,先放进去的后拿出来,后放进去的先拿出来。
作用:比如后置运算符运算时,需要堆栈。
堆栈(stack):具有一定操作约束的线性表。约束是:只在一端(栈顶,top)做插入、删除。
2 堆栈的操作
插入数据:入栈(Push)
删除数据:出栈(Pop)
后入先出:Last In First Out(LIFO)
这让我想起了华为调转数据顺序的程序
3、堆栈的表示(存储)
1)A 数组实现单堆栈 B数组实现双堆栈。为了尽量利用空间,两头向中间生长。
2)链表实现堆栈。对于单向链表,只能以头节点作为堆栈的top,而不能用尾节点。
按照这张ppt创建的堆栈,判断堆栈是否为空的办法就是s->Next == NULL,判断堆栈是否为空。
用链表存储堆栈,push时不用判断堆栈是否满,因为堆栈可以不断动态申请空间,而数组的存储空间是固定的。但是pop时,要判断是否为空。
如上图,用链表表示堆栈时,需要创建一个空的s节点。而堆栈的top是s->Next
4 堆栈的作用
1)将中最表达式转换为后缀表达式,这是计算机实现按照运算符优先级进行表达式计算的一种实现方法
2)递归函数的实现
3)回溯算法
4)深度优先搜索