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:表达式求值

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

  • 相关阅读:
    grep 命令操作
    vi & vim复制,粘贴,剪切文本
    β版本第四次冲刺
    β版本第三次冲刺
    β版本第二次冲刺
    β版本第一次冲刺
    华为软件开发云,个人评测及体会
    事后诸葛亮
    【Alpha】团队课程展示
    团队Alpha博客链接目录
  • 原文地址:https://www.cnblogs.com/Real-Ying/p/7388026.html
Copyright © 2011-2022 走看看