跳至主要內容

队列

MistyStar...大约 3 分钟数据结构

队列

队列是一种特殊的线性表,它只允许在表的一端(队尾)进行插入操作,而在表的另一端(队头)进行删除操作。队列遵循先进先出(First In First Out, FIFO)的原则,即先进入队列的元素将会最先被删除。在队列中,进行插入操作的一端称为队尾,进行删除操作的一端称为队头。

队列可以通过多种方式实现,包括顺序存储结构(如数组)和链式存储结构(如链表)。顺序队列使用一组连续的存储单元按顺序存放队列元素,而链队列则由一系列节点组成,每个节点包含数据和指向下一个节点的指针。

(1) 【数据结构】队列(顺序队列、循环队列、链队列)_顺序队列的定义-CSDN博客. https://blog.csdn.net/Jacky_Feng/article/details/108595654. (2) 【数据结构入门】队列(Queue)详解(定义、销毁、入队、出队等)| 图解数据结构,超详细哦~-CSDN博客. https://blog.csdn.net/weixin_48025315/article/details/120277050. (3) 队列的定义-CSDN博客. https://blog.csdn.net/ZCMUCZX/article/details/80920876.

基本用法

C++

在C++中,队列是一种先进先出(First In First Out, FIFO)的数据结构,它允许在队列的末尾添加元素,并从队列的开头移除元素。C++标准模板库(STL)中的std::queue是队列的一个实现,它提供了一系列用于操作队列的函数。

以下是std::queue的一些基本用法:

#include <iostream>
#include <queue>

int main() {
    std::queue<int> q;

    // 向队列中添加元素
    q.push(1);
    q.push(2);
    q.push(3);

    // 显示队列前端的元素
    std::cout << "队列前端的元素是: " << q.front() << std::endl;

    // 移除队列前端的元素
    q.pop();

    // 再次显示队列前端的元素
    std::cout << "现在队列前端的元素是: " << q.front() << std::endl;

    // 检查队列是否为空
    if (!q.empty()) {
        std::cout << "队列不为空" << std::endl;
    }

    // 显示队列中的元素个数
    std::cout << "队列中的元素个数是: " << q.size() << std::endl;

    return 0;
}

在这个例子中,我们创建了一个int类型的队列q,使用push函数向队列中添加了三个元素,然后使用frontpop函数来访问和移除队列前端的元素。我们还使用了empty函数来检查队列是否为空,以及size函数来获取队列中的元素个数。

std::queue可以与不同类型的容器一起使用,但默认情况下,它是基于s

td::deque实现的。你也可以选择使用std::list`作为底层容器来实现队列。

Python

在Python中,deque(发音为"deck",全称为double-ended queue,双端队列)是一种由collections模块提供的数据结构。它是一个线性容器,允许在两端快速添加(append)和删除(pop)元素。与普通的列表相比,deque在两端操作的时间复杂度为O(1),这使得它在实现队列和栈时非常高效。

以下是deque的一些基本用法:

from collections import deque

# 创建一个空的deque
d = deque()

# 在右端添加元素
d.append('a')
d.append('b')

# 在左端添加元素
d.appendleft('z')

# 从右端移除元素并返回
r = d.pop()

# 从左端移除元素并返回
l = d.popleft()

# 访问deque中的元素
first_element = d[0]
last_element = d[-1]

# 长度
length = len(d)

# 清空deque
d.clear()

# 限制deque的大小,超出部分会从另一端弹出
limited_deque = deque(maxlen=3)

deque还提供了其他一些有用的方法,如rotate可以旋转deque中的元素,extendextendleft可以从一个可迭代对象中添加多个元素。由于其高效的性能,deque`常用于需要快速添加和移除元素的场景,如在多线程编程中作为共享队列。

评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.2.1