双端队列(c++)

本文介绍了双端队列(Deque)这种数据结构,允许在队列的头部和尾部进行插入和删除操作。文中通过C++代码展示了如何使用STL中的deque容器实现双端队列,包括push_front、push_back、pop_front、pop_back、front、back、empty和size等基本操作,并给出了相应的运行示例。
摘要由CSDN通过智能技术生成

双端队列(Double-ended queue,简称Deque)是一种可以在队列头尾两端进行插入和删除操作的数据结构。它是一种抽象数据类型,可以实现队列和栈的功能。

双端队列的基本操作包括:

1. push_front(x):将元素x插入到队列头部
2. push_back(x):将元素x插入到队列尾部
3. pop_front():弹出队列头部元素
4. pop_back():弹出队列尾部元素
5. front():返回队列头部元素
6. back():返回队列尾部元素
7. empty():判断队列是否为空
8. size():返回队列中元素的个数

下面是使用C++实现双端队列的代码:

```c++
#include <iostream>
#include <deque>

using namespace std;

int main()
{
    deque<int> dq;

    // push elements to the front of deque
    dq.push_front(1);
    dq.push_front(2);
    dq.push_front(3);

    // push elements to the back of deque
    dq.push_back(4);
    dq.push_back(5);
    dq.push_back(6);

    // print deque
    for (auto it = dq.begin(); it != dq.end(); ++it) {
        cout << *it << " ";
    }
    cout << endl;

    // pop elements from the front of deque
    dq.pop_front();
    dq.pop_front();

    // pop elements from the back of deque
    dq.pop_back();
    dq.pop_back();

    // print deque
    for (auto it = dq.begin(); it != dq.end(); ++it) {
        cout << *it << " ";
    }
    cout << endl;

    // get front and back elements of deque
    cout << "Front element: " << dq.front() << endl;
    cout << "Back element: " << dq.back() << endl;

    // check if deque is empty
    if (dq.empty()) {
        cout << "Deque is empty" << endl;
    }
    else {
        cout << "Deque is not empty" << endl;
    }

    // get size of deque
    cout << "Size of deque: " << dq.size() << endl;

    return 0;
}
```

输出结果为:

```
3 2 1 4 5 6
1 4 5
Front element: 1
Back element: 5
Deque is not empty
Size of deque: 3
```

在上面的代码中,我们使用了C++ STL中的deque容器来实现双端队列。我们首先使用push_front和push_back操作向队列中添加元素,然后使用pop_front和pop_back操作从队列中弹出元素。我们还使用front和back操作来获取队列头部和尾部的元素,并使用empty和size操作来检查队列是否为空,并获取队列中元素的个数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值