雙向佇列的簡單講解

2021-09-12 14:22:05 字數 2240 閱讀 1911

參考:

雙向佇列,顧名思義就是佇列二邊都可以操作的佇列。

雙向佇列和向量很相似,但是它允許在容器頭部快速插入和刪除(就像在尾部一樣)。雙向都可以進行相應的操作。

constructors

建立乙個新雙向佇列

operators

比較和賦值雙向佇列

assign()

設定雙向佇列的值

at()

返回指定的元素

back()

返回最後乙個元素

begin()

返回指向第乙個元素的迭代器

clear()

刪除所有元素

empty()

返回真如果雙向隊列為空

end()

返回指向尾部的迭代器

erase()

刪除乙個元素

front()

返回第乙個元素

get_allocator()

返回雙向佇列的配置器

insert()

插入乙個元素到雙向佇列中

max_size()

返回雙向佇列能容納的最大元素個數

pop_back()

刪除尾部的元素

pop_front()

刪除頭部的元素

push_back()

在尾部加入乙個元素

push_front()

在頭部加入乙個元素

rbegin()

返回指向尾部的逆向迭代器

rend()

返回指向頭部的逆向迭代器

resize()

改變雙向佇列的大小

size()

返回雙向佇列中元素的個數

swap()

和另乙個雙向佇列交換元素

舉個栗子:

description

想想雙向鍊錶……雙向佇列的定義差不多,也就是說乙個佇列的隊尾同時也是隊首;兩頭都可以做出隊,入隊的操作。

現在給你一系列的操作,請輸出最後佇列的狀態;

命令格式:

lin x x表示乙個整數,命令代表左邊進隊操作;

rin x 表示右邊進隊操作;

rout

lout 表示出隊操作;

input

第一行包含乙個整數m(m<=10000),表示有m個操作;

以下m行每行包含一條命令;

命令可能不合法,對於不合法的命令,請在輸出中處理;

output

輸出的第一行包含佇列進行了m次操作後的狀態,從左往右輸出,每兩個之間用空格隔開;

以下若干行處理不合法的命令(如果存在);

對於不合法的命令,請輸出一行x error

其中x表示是第幾條命令;

sample input

8

lin 5

rin 6

lin 3

lout

rout

rout

rout

lin 3

sample output

3

7 error

ac**:

#include

#include

#include

#include

#include

using namespace std;

#define max 10010

intmain()

;scanf

("%d"

,&n)

;for

(i=1

; i<=n; i++

)elseif(

!strcmp

(s,"rin"))

elseif(

!strcmp

(s,"lout"))

elseif(

!strcmp

(s,"rout"))

}printf

("%d"

,q.front()

); q.

pop_front()

;while

(!q.

empty()

)printf

("\n");

for(i=

1; i<=n; i++)if

(m[i]

)printf

("%d error\n"

,i);

return0;

}

php簡單的雙向佇列

class doublequeue 得到陣列的總大小 public function count 將乙個單元壓入陣列尾部 public function queuepush data 將乙個單元壓入陣列開頭 public function queueunshift data 從陣列最後乙個移出 pu...

php 簡單雙向佇列

雙向佇列 classdouble queue 從佇列尾部彈出 public functionfront remove 從佇列尾部壓入 public functionrear add node 從佇列尾部彈出 public functionrear remove 獲取佇列長度 public funct...

基於雙向鍊錶的簡單阻塞佇列

最近工作比較忙,水一篇 author niuxy date 2020 6 8 8 54 下午 description 基於雙向鍊錶的簡單 fifo 佇列 鎖的粒度很粗,僅針對最上層操作進行互斥同步關係規劃 最上層方法有兩個 put 與 remove 以 length 與 capacity 是否相等為...