zoukankan      html  css  js  c++  java
  • 浅谈栈、队列

            所谓栈和队列其本质都是一种存储信息的方法,最主要的差别就是两者的存取方式不同,栈相当于是一个一端开口一端封闭的空心玻璃柱,每存入一个数据就是扔进一个与管口等粗的球,取出数据时只能取最上头的,也就是最后一个放进去的,并且当管中无球时,无法取数据;相对而言,队列相当于是一个两端开口的空心玻璃柱,每存入一个数据,就从后端插入一个与管口等粗的球,取数据时只能从前端取不能从后段取,同样当其中无球时无法取。

           从上述介绍中可以发现两者各有优势,但队列有一个显著问题,但插入取出次数多时,可能仅有几个数据但存储却达到几百个位置,因此我们考虑到在已知同时存储的数据不多的时候,可以用环形的数组进行存储。

    栈和队列

    进出栈代码如下:

    void ruzhan(int x) // 入栈时传入入栈数据
    {
        zhan[tot]=x;
        tot=tot+1;
    }
    void chuzhan(int x) // 出栈时传入出栈几个
    {
        for(int i=0;i<x;i++)
        {
            zhan[tot-1]=0;
            tot=tot-1;
        }
    }
    全局变量:
    zhan[] // 指存栈用的数组
    tot // 用于表示当前存储的位置

    进出队列代码如下:

    void rudulie(int x) // 入队列时传入入队列数据
    {
        duilie[end]=x;
        end=end+1;
    }
    void chuduilie(int x) // 出队列时传入出队列几个
    {
        for(int i=0;i<x;i++)
        {
            duilie[begin]=0;
            begin=begin+1;
        }
    }
    全局变量:
    duilie[] // 指存队列用的数组
    begin // 用于表示当前存储的开头位置
    end // 用于表示当前存储的结束位置

    环状队列代码如下:

    void rudulie(int x) // 入队列时传入入队列数据
    {
        duilie[end]=x;
        end=end+1;
        if(end>=max)
        {
            end=end-max;
        }
    }
    void chuduilie(int x) // 出队列时传入出队列几个
    {
        for(int i=0;i<x;i++)
        {
            duilie[begin]=0;
            begin=begin+1;
        }
        if(begin>=max)
        {
            begin=begin-max;
        }
    }
    全局变量:
    duilie[] // 指存队列用的数组
    begin // 用于表示当前存储的开头位置
    end // 用于表示当前存储的结束位置
    max // 用于表示数组的总格数

    感谢各位观看我的博客,希望能对大家有所帮助。

  • 相关阅读:
    不怕路长,只怕心老——走在IT行业的路上
    python中 r'', b'', u'', f'' 的含义
    WSGI接口
    HTTP协议简介
    Flask中的Session
    一个 android 开机自动启动功能的例子
    遍历 JObject各属性(CSharp2)
    ASP.NET 伪随机数函数避免重复一例
    浏览器环境下 ES6 的 export, import 的用法举例
    在浏览器环境使用js库(不用require功能)
  • 原文地址:https://www.cnblogs.com/szy-wlxy/p/4650740.html
Copyright © 2011-2022 走看看