您的位置:首页 > 理论基础 > 数据结构算法

数据结构学习-堆栈

2017-05-04 11:08 162 查看
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)深度优先搜索
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: