美文网首页
队列和栈(上篇)

队列和栈(上篇)

作者: 兄主的仙人掌 | 来源:发表于2019-06-02 12:35 被阅读0次

队列和栈

啊哈,我开新坑了

<img src="/images/algorithms/1.jpeg" alt="没想到吧,垃圾" height="30%" width="30%" />

队列

首先,我们来讲解一下什么是队列
你们印象中的队列可能是这样子
的:

[图片上传失败...(image-e37b7d-1559421321515)]

而算法中的队列是这样子的:

[图片上传失败...(image-eb1128-1559421321515)]

数据结构分析

队列是一种数据结构,用来按一定规则存储数据
那是什么规律呢?
队列是按一种先进先出(FIFO,First In First Out)的规则存储的
换成人话说,就是:
假如你在排队,最先排的人先买好,最后排的人最后买。如果我们把开始排队比拟成入队,买好票出列比拟成出队,就好说了
那这东西怎么用C++代码实现呢,很简单,只需要一个数组,两个整型变量即可,如下:

int data[100];//队列里的数字
int head,tail;//head存储了队列头的位置,tail存储了队列尾巴的位置

初始化:

memset(data,0,sizeof(data));//把data数组初始化为0
head=0;//头指针指向第1个数字
tail=0;//尾指针指向最后一个数字+1(现在不算)

head==tail时,队列为空

实战

那队列有什么用呢?

举一个啊哈算法上的例子吧:《解密QQ号》

注意啊,不是叫你盗号,别开心了!

开始讲解:

详情

新学期开始了,小哈是小哼的新同桌,小哼向小哈询问QQ号,小哈当然不会直接告诉小哼。所以小哈给了小哼一串加密过的数字,同时小哈也告诉了小哼解密规则。规则是这样的:首先将第1个数删除,紧接着将第2个数放到这串数的末尾,再将第3个数删除并将第4个数再放到这串数的末尾,再将第5个数删除……直到剩下最后一个数,将最后一个数也删除。按照刚才删除的顺序,把这些删除的数连在一起就是小哈的QQ啦。现在你来帮帮小哼吧。小哈给小哼加密过的一串数是“6 3 1 7 5 8 9 2 4”。解密后小哈的QQ号应该是“6 1 5 9 4 7 2 8 3”。

输入格式

只有2行
第1行有一个整数n (1<=n<=100000)
第2行有n个整数为加密过的QQ号,每个整数之间用空格隔开。每个整数在1~9之间。

输出格式

只有一行,输出解密后的QQ号。
限制: 每个测试点1秒
50%的数据1<=n<=10000
100%的数据1<=n<=100000

样例输入

9
6 3 1 7 5 8 9 2 4

样例输出

6 1 5 9 4 7 2 8 3

按我的习惯,先上代码,这次是C++:

#include <iostream>
#include <cstring>//memset()函数在此
using namespace std;
int main() {
    int data[100000];
    int head,tail;
    memset(data,0,sizeof(data));
    head=0;tail=0;
    //上面都是初始化
    int n;
    cin >> n;
    for (int i=0;i<=n-1;i++) {
        cin >> data[i];
        tail++;
    }
    //上面是读入·
    while(head<tail) {//队列还有时循环
        cout << data[head] << " ";
        head++;//head++就是删除一个数
        data[tail]=data[head];//放一个数到末尾
        tail++;//队列扩大
        head++;//放到后面的数要在前面删除
    }
    return 0;
}

运行结果如下:

[图片上传失败...(image-83a527-1559421321515)]

至于栈,我我我写不下去了
其实是VSCode出bug了

大家拜拜!

相关文章

  • 队列和栈(上篇)

    队列和栈 啊哈,我开新坑了 队列 首先,我们来讲解一下什么是队列你们印象中的队列可能是这样子的: [图片上传失败....

  • 数据结构——栈和队列

    用数组实现栈和队列 用栈实现队列 用队列实现栈 栈和队列的经典算法题最小间距栈宠物收养所 数组实现栈和队列 用数组...

  • 栈和队列

    用栈定义队列(出入栈) 用队列定义栈(数据队列和辅助队列)

  • Algorithm小白入门 -- 队列和栈

    队列和栈队列实现栈、栈实现队列单调栈单调队列运用栈去重 1. 队列实现栈、栈实现队列 队列是一种先进先出的数据结构...

  • 栈和队列

    栈和队列 本质上是稍加限制的线性表 栈和队列定义 栈顺序栈定义 链栈结点定义 队列顺序队列 链队列链队类型定义 链...

  • Python实现栈和队列以及使用list模拟栈和队列

    Python实现栈和队列 Python使用list模拟栈和队列

  • 算法-栈和队列算法总结

    栈和队列算法总结 1 模拟 1.1 使用栈实现队列 1.2 使用队列实现栈 2 栈的应用 2.1 栈操作 2.2 ...

  • 算法分析 [BFS、Greedy贪心] 2019-02-18

    队列 和 栈 232. 用栈实现队列 Implement Queue using Stacks双栈,出队列时,将i...

  • 实 验 四 栈和队列

    一、实验目的与要求:## 1、理解栈和队列抽象数据类型。 2、掌握栈和队列的存储结构和操作实现。 3、理解栈和队列...

  • 栈、队列和链表

    基本数据结构 栈和队列 栈和队列都是动态集合。栈实现的是一种后进先出策略。队列是一种先进先出策略。 栈 栈上的in...

网友评论

      本文标题:队列和栈(上篇)

      本文链接:https://www.haomeiwen.com/subject/rdkxxctx.html