浅谈栈、队列

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

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

栈和队列

进出栈代码如下:

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 // 用于表示数组的总格数

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

原文地址:https://www.cnblogs.com/szy-wlxy/p/4650740.html