经典数据结构:队列的详解

简介: 经典数据结构:队列的详解

想要坚持写点什么,那干脆写一个系列吧。想想有什么可以写的呢?程序=算法+数据结构,可见算法和数据结构的重要性。这个系列老诗力求用最简单的语言把算法和数据结构讲得明明白白,由浅到深,有兴趣的话,可以关注一下专栏。

image.png

之前的篇章都是给大家讲的算法,今天给大家讲一种数据结构。

数据结构就是属于按照特殊的数据存储方式进行存储和读写。它们都有着自己的规律。今天要给大家讲的是队列。

关于队列的描述

队列(Queue)这个东西是一种线性存储结构,它的特点是“先进先出”。

队列是头部只能输出,尾部只能输入

(1)队头与对尾:可以输出的部分叫头,可以输入的部分叫尾

(2)进队:把数据放进队尾

(3)出队:把数据从队头拿出来

其实队列这个数据结构也比较容易说明白。也就是我们去食堂排队打饭一样,一个接着一个,盛饭端叫做队头,然后新来的人从队尾插入。就是这么简单。

#include <queue>
#include <iostream>
using namespace std;
 
int main(){
    queue<int> q;
    for (int i = 0; i < 10; i++){
        q.push(i);
    }
    if (!q.empty()){
        cout << "队列q非空!" << endl;
        cout << "q中有" << q.size() << "个元素" << endl;
    }
    cout << "队头元素为:" << q.front() << endl;
    cout << "队尾元素为:" << q.back() << endl;
    for (int j = 0; j < 10; j++){
        int tmp = q.front();
        cout << tmp << " ";
        q.pop();
    }
    cout << endl;
    if (!q.empty()){
        cout << "队列非空!" << endl;
    }
    system("pause");
    return 0;
}

上面的是c++实例,在c++中别人早就已经封装好队列,我们导入头文件#include<queue>直接用就可以了。

上面的操作是将10个数从0开始进队,然后再判空,然后再一个人从队列中出来。

进队的顺序是0123456789,而出队的顺序还是保持不变的。

更多的干货内容,项目源码,可以关注公众号:诗一样的代码

既然进来了,原创不易。小伙伴点个赞再走呗

相关文章
|
2天前
|
存储 算法 搜索推荐
探索常见数据结构:数组、链表、栈、队列、树和图
探索常见数据结构:数组、链表、栈、队列、树和图
76 64
|
2天前
|
缓存 算法 调度
数据结构之 - 双端队列数据结构详解: 从基础到实现
数据结构之 - 双端队列数据结构详解: 从基础到实现
16 5
|
2天前
|
消息中间件 存储 Java
数据结构之 - 深入探析队列数据结构: 助你理解其原理与应用
数据结构之 - 深入探析队列数据结构: 助你理解其原理与应用
11 4
|
23天前
|
存储 Java
【数据结构】优先级队列(堆)从实现到应用详解
本文介绍了优先级队列的概念及其底层数据结构——堆。优先级队列根据元素的优先级而非插入顺序进行出队操作。JDK1.8中的`PriorityQueue`使用堆实现,堆分为大根堆和小根堆。大根堆中每个节点的值都不小于其子节点的值,小根堆则相反。文章详细讲解了如何通过数组模拟实现堆,并提供了创建、插入、删除以及获取堆顶元素的具体步骤。此外,还介绍了堆排序及解决Top K问题的应用,并展示了Java中`PriorityQueue`的基本用法和注意事项。
24 5
【数据结构】优先级队列(堆)从实现到应用详解
|
2天前
【初阶数据结构】深入解析队列:探索底层逻辑
【初阶数据结构】深入解析队列:探索底层逻辑
|
11天前
|
前端开发
07_用队列实现栈
07_用队列实现栈
|
11天前
|
测试技术
02_由两个栈组成的队列
02_由两个栈组成的队列
|
14天前
|
存储
|
1月前
|
存储 C语言
数据结构基础详解(C语言): 栈与队列的详解附完整代码
栈是一种仅允许在一端进行插入和删除操作的线性表,常用于解决括号匹配、函数调用等问题。栈分为顺序栈和链栈,顺序栈使用数组存储,链栈基于单链表实现。栈的主要操作包括初始化、销毁、入栈、出栈等。栈的应用广泛,如表达式求值、递归等场景。栈的顺序存储结构由数组和栈顶指针构成,链栈则基于单链表的头插法实现。
167 3
|
1月前
|
Java
【数据结构】栈和队列的深度探索,从实现到应用详解
本文介绍了栈和队列这两种数据结构。栈是一种后进先出(LIFO)的数据结构,元素只能从栈顶进行插入和删除。栈的基本操作包括压栈、出栈、获取栈顶元素、判断是否为空及获取栈的大小。栈可以通过数组或链表实现,并可用于将递归转化为循环。队列则是一种先进先出(FIFO)的数据结构,元素只能从队尾插入,从队首移除。队列的基本操作包括入队、出队、获取队首元素、判断是否为空及获取队列大小。队列可通过双向链表或数组实现。此外,双端队列(Deque)支持两端插入和删除元素,提供了更丰富的操作。
39 0
【数据结构】栈和队列的深度探索,从实现到应用详解