zoukankan      html  css  js  c++  java
  • 3_栈

    逻辑结构

    栈是限定只能在表尾进行插入或删除操作的线性表

    “后进先出”

     

    存储结构

    顺序栈表示方法:

    #define MaxSize 50     //最大个数
    typedef struct{
           ElemType data[MaxSize];     //数据元素
           int top;                //栈顶指针
    }SqStack;

    s.top=-1   //栈空条件,也是初始化,栈顶指针为-1

    s.top=MaxSize-1   //栈满条件

    s.top+1    //栈长

    s.data[++s.top]=x    //进栈,指针先加1再入栈

    x=s.data[s.top--]     //出栈,先出栈指针再加1

    链式栈表示方法:

    typedef struct Linknode{
            ElemType data;               //数据域
            struct LinkList *next;      //指针域
    }*LinkStack                            //类型定义

    共享栈:

    top2-top1=1     //栈满条件

    s1.[++top1]=x  //1号栈进栈top1先加1再赋值

    s2.[--top2]=x   //2号栈进栈top2先减1再赋值

    应用1:括号匹配

    实现步骤:建立空栈,将括号按顺序读取,若是左括号则刷新目前最迫期待匹配,其他的期待匹配紧迫性降一级;若是右括号则栈顶最迫期待得以消解,直到栈空(前提是未匹配括号组顺序正确)

    应用2:表达式求值

    实现步骤:按左到右顺序把后缀表达式压入栈中,按类型,若是操作数压入栈中,若是操作符从栈中出两个操作数形成一个算式算出结果重新压入栈中,最终结果会存放在栈顶

  • 相关阅读:
    web前端开发规范
    前端工程构建工具之Yeoman
    javascript编码规范
    IOS和安卓不同浏览器常见bug
    SASS对css的管理
    移动端开发注意事项
    性能调试工具
    前端开发和其他类别工程师配合的那些事!
    前端工程师常见的面试题
    前端性能优化浏览器+服务器篇
  • 原文地址:https://www.cnblogs.com/Real-Ying/p/7388026.html
Copyright © 2011-2022 走看看