zoukankan      html  css  js  c++  java
  • 栈ADT

      栈是限制插入和删除只能在同一位置的表,这一位置称为栈顶(top),也可能称为LIFO表

      对于空栈的pop(弹栈)操作是一个ADT错误,但是若是push(压栈)时空间超限并不是ADT错误

      实现:基于数组与链表的实现是非常简单的,因为栈常用方法仅有push(T t)/pop()/top:返回栈顶元素

    应用

    • 平衡符号:判断一段字符串中的多对符号是否是完整的
    • 后缀表达式:当栈遇到操作数时进行压栈操作,遇到运算符时将弹出操作数进行运算,然后将运算结果压栈
    • 将正常的中缀表达式转换为后缀表达式(从左至右的运算顺序)
      • 遇到操作数直接输出
      • 遇到运算符压栈,若栈内存在优先级高于当前入栈运算符,则高优先级(包括平级)弹栈输出
      • "("拥有最高优先级,且若无")"压栈则不会弹出"(",否则将会弹出"("与")"之间所有运算符
      • 若无输入压栈则会弹出栈中的所有元素
    • 方法调用:方法的入栈弹栈(方法递归之尾递归,递归总是可以去除的,编译器将会在转变成汇编语言时去除递归)
  • 相关阅读:
    混合背包
    二维背包
    0/1背包问题(DP)
    冒泡排序
    快速排序
    最长上升子序列
    二分查找
    n后问题
    crontab 定时任务
    删除以某字符串开头的表
  • 原文地址:https://www.cnblogs.com/flydoging/p/10342968.html
Copyright © 2011-2022 走看看