• [数据结构]栈的学习


    一 栈的定义

        栈是一种限定的线性表
       比喻:装羽毛球的盒子,

    二 栈抽象数据类型

     

    三 栈的分类 

    1  顺序栈   2多栈共享技术 3  链栈  4 多栈运算
    3.1,顺序栈的定义:
    自己的理解:不是动态的,比较死;
    3.1.1进栈
        注意点:要判断是否满.
        比喻:如果羽毛球盒子满了怎么可能在装?!
       3.1.2出栈
           注意:要判断是是否为空
           比喻:如果羽毛球盒子空了,还怎么拿羽毛球?1!
    3.1.3 进栈和出栈示意图:
         比喻:进栈如同装羽毛球,出栈如同拿羽毛球.
     
    3.1.4读栈顶元素
    思考:说明读栈顶元素和退栈的处理有什么异同?  *****
           答:读栈顶元素没有指针的移动,而退栈有指针的移动;
           比喻:拿一个羽毛球就不需要移动,而你想拿多个当然要移动了;
    3.2 多栈共享技术(2栈)
    3.3 链栈
    理解;联系到链表.
    比喻:1 链子 2 糖葫芦(不能从你手拿的那方出) 3  暂时没有想到
    3.3.1进栈
    注意:同样也要判断是否满*****
    3.3.2 出栈
    注意:出栈同样也要判断是否为空
    3.4 多栈运算
     
     

    四 栈的应用

    4.1 括号匹配问题
    算法理解:当遇到左括号时进栈,遇到右括号时比较;如( { [ ]} )
    4.1.1 不合法情况:
    (1) 右括号找不到栈顶左括号匹配 如 1 ({ ] ) 2  [ ] )
    (2) 当读完序列时,还有左括号在栈中.如 1 {[ ]   2 [ [ ( )
    4.1.2 合法的情况:读完序列时栈也同时空 


    作者:8亩田
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.

    本文如对您有帮助,还请多帮 【推荐】 下此文。
    如果喜欢我的文章,请关注我的公众号
    如果有疑问,请下面留言

    学而不思则罔 思而不学则殆
  • 相关阅读:
    P1215 [USACO1.4]母亲的牛奶 Mother's Milk
    P2966 [USACO09DEC]牛收费路径Cow Toll Paths
    P2419 [USACO08JAN]牛大赛Cow Contest
    1085 数字游戏
    P1983 车站分级
    P1346 电车(dijkstra)
    P1196 银河英雄传说(加权并查集)
    P1195 口袋的天空
    3027 线段覆盖 2
    codevs 1214 线段覆盖/1643 线段覆盖 3
  • 原文地址:https://www.cnblogs.com/liu-wang/p/6686514.html
Copyright © 2020-2023  润新知