zoukankan      html  css  js  c++  java
  • 栈和堆简介

        线性结构的两种常见应用之一   栈   (存储数据的结构)

      静态分配的内存都在栈里(系统处理)

      动态分配的内存都在堆里(手动处理)

        定义

        一种可以实现“先进后出” 的存储结构

        栈类似于箱子

      

        

        分类

        静态栈 (类似于用数组实现)

        动态栈 (类似于用链表实现)

        

        算法(往里放,从里取)

        出栈

        压栈(参看Java中线程的例子,成产消费的例子)

        

        应用

        函数调用

        中断

        表达式求值(用两个栈,一个存放数字,一个存放符号)

        内存分配

        缓冲处理

        迷宫

        

        线性结构的两种常见应用之二   队列

        定义:

        一种可是实现“先进先出”的存储结构

        分类:

        链式队列:用链表实现

        

        静态队列:用数组实现

        静态对流通常都必须是循环队列,为了减少

        内存浪费。

        

        循环队列的讲解:

        1、 静态队列为什么必须是循环队列

        2、 循环队列需要几个参数来确定 及其含义

        需要2个参数来确定

        front

         

        rear

              

        

        3、 循环队列各个参数的含义

      

    2个参数不同场合不同的含义?    

                建议初学者先记住,然后慢慢体会

        

            1)队列初始化

        front和rear的值都是零

         2)队列非空

        front代表队列的第一个元素

        rear代表了最后一个有效元素的下一个元素

         3)队列空

        front和rear的值相等,但是不一定是零

         4、 循环队列入队伪算法讲解

           两步完成:

           1)将值存入r所代表的位置

           2)将r后移,正确写法是 rear = (rear+1)%数组长度

           错误写法:rear=rear+1;

           

        5、 循环队列出队伪算法讲解

        front = (front+1) % 数组长度

        

        6、 如何判断循环队列是否为空

        如果front与rear的值相等,

        则队列一定为空

        

        7、 如何判断循环队列是否已满

        预备知识:

        front的值和rear的值没有规律,

        即可以大,小,等。

        

        两种方式:

        1、多增加一个表标识的参数

        2、少用一个队列中的元素(才一个,不影响的)

        通常使用第二种方法

        如果r和f的值紧挨着,则队列已满

        用C语言伪算法表示就是:

        if( (r+1)%数组长度 == f )

        已满

        else

        不满

        

    队列算法:

        入队

        出队

        队列的具体应用:

        所有和事件有关的操作都有队列的影子。

        (例如操作系统认为先进来的先处理)

        

  • 相关阅读:
    BZOJ2821 作诗(Poetize) 【分块】
    BZOJ2724 蒲公英 【分块】
    Codeforces 17E Palisection 【Manacher】
    BZOJ2565 最长双回文串 【Manacher】
    Codeforces 25E Test 【Hash】
    CODEVS3013 单词背诵 【Hash】【MAP】
    HDU2825 Wireless Password 【AC自动机】【状压DP】
    HDU2896 病毒侵袭 【AC自动机】
    HDU3065 病毒侵袭持续中【AC自动机】
    HDU2222 Keywords Search 【AC自动机】
  • 原文地址:https://www.cnblogs.com/jiefangzhe/p/10811495.html
Copyright © 2011-2022 走看看