美文网首页
数据结构笔记(线性结构->堆栈)

数据结构笔记(线性结构->堆栈)

作者: 岸边露伴一动不动 | 来源:发表于2020-07-10 11:15 被阅读0次

前缀表达式 -+abc/de
中缀表达式 a+b
c-d/e
后缀表达式 abc*+de/-

堆栈(stack):具有一定操作约束的线性表,只在一端(栈顶:Top)做插入、删除
插入数据:入栈(push)
删除数据:出栈(pop)
后入先出:Last In First Out(LIFO)

堆栈操作:
1、Stack CreateStack(int MaxSize):生成空堆栈,最大长度为MaxSize
2、int IsFull(Stack S,int MaxSize):判断堆栈S是否已满
3、void Push(Stack S,ElementType item):将元素item压入堆栈
4、int isEmpty(Stack S):判断堆栈是否为空
5、ElementType Pop(Stack S):删除并返回栈顶元素

堆栈的链式存储实现

实际就是一个单链表,叫做链栈,栈顶指针Top应该在链表的头部(尾部则Pop操作无法完成)
数组大小固定,链表不固定

中缀表达式求值

解决方法:中缀表达式通过堆栈转化为后缀表达式,求值 (T(N) = O(N))
转化方法:
1、运算数:直接输出
2、左括号:压入堆栈
3、右括号:将栈顶的运算符弹出并输出,直到遇到左括号(左括号出栈,不操作)
4、运算符:
1、优先级大于栈顶运算符时、压栈
2、优先级小于栈顶运算符时,将栈顶运算符弹出并输出,并对新的栈顶运算符做相同比较直到大于栈顶运算符优先级,然后将新运算符压栈
5、各运算符操作完毕,将堆栈中的剩余运算符一并输出

例:
3+2*((8+12)/10)-(100/5)

3 2 8 12 + 10 / * + 100 5 / -

-13

堆栈应用:
1、函数调用及递归实现
2、深度优先搜索(?
3、回溯算法(? 老鼠走迷宫?

相关文章

  • 常见数据结构和算法

    常见数据结构 线性数据结构(按顺序具有数据元素的数据结构):数组,堆栈,链表(单链表 双链表),队列非线性数据结...

  • 数据结构笔记(线性结构->堆栈)

    前缀表达式 -+abc/de中缀表达式 a+bc-d/e后缀表达式 abc*+de/- 堆栈(stack):...

  • 线性表

    数据结构: 数据项 数据对象 数据结构 线性表 队列 堆栈 树 (HashMap(1.8)内置红黑树) 图论 排...

  • LeetCode刷题之栈、队列

    栈(Stack) 又名堆栈,它是一种重要的数据结构。从数据结构角度看,栈也是线性表,其特殊性在于栈的基本操作是线性...

  • 数据结构与算法 (栈实现篇)

    数据结构与算法 (栈实现篇) 在数据结构与算法中,栈(stack)又名堆栈,栈是一种受限的线性储存结构,只允许在一...

  • C#之数据结构(上)

    数据结构 一般将数据结构分为两大类: 线性数据结构和非线性数据结构。 线性数据结构有: 线性表、栈、队列、串、数组...

  • py基础

    5Python集合容器 数据结构数据结构 一般将数据结构分为两大类: 线性数据结构和非线性数据结构。 线性数据结构...

  • 1. 数据结构与算法:堆栈

    堆栈(Stack)是一种后进先出(LIFO)的线性数据结构,对堆栈的插入和删除操作都只能在栈顶(top)进行。 S...

  • 线性结构和非线性结构数据结构

    线性结构和非线性结构数据结构包括: 线性结构和非线性结构 线性结构l 线性结构作为最常用的数据结构.其特点是数据元...

  • 重学数据结构 --- 分类+稀疏数组

    一、数据结构的分类 1. 数据结构两大类 线性结构和非线性结构 1) 线性结构 线性结构是最常见的数据结构,特点是...

网友评论

      本文标题:数据结构笔记(线性结构->堆栈)

      本文链接:https://www.haomeiwen.com/subject/lmipcktx.html