码迷,mamicode.com
首页 > 其他好文 > 详细

3_栈

时间:2017-08-18 11:17:03      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:color   操作   顺序栈   data   逻辑   efi   top   指针   最大   

逻辑结构

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

“后进先出”

 

存储结构

顺序栈表示方法:

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

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

 

3_栈

标签:color   操作   顺序栈   data   逻辑   efi   top   指针   最大   

原文地址:http://www.cnblogs.com/Lindaman/p/7388026.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!