description
想想雙向鍊錶……雙向佇列的定義差不多,也就是說乙個佇列的隊尾同時也是隊首;兩頭都可以做出隊,入隊的操作。
現在給你一系列的操作,請輸出最後佇列的狀態;
命令格式:
lin x x表示乙個整數,命令代表左邊進隊操作;
rin x 表示右邊進隊操作;
rout
lout 表示出隊操作;
input
第一行包含乙個整數m(m<=10000),表示有m個操作;
以下m行每行包含一條命令;
命令可能不合法,對於不合法的命令,請在輸出中處理;
output
輸出的第一行包含佇列進行了m次操作後的狀態,從左往右輸出,每兩個之間用空格隔開;
以下若干行處理不合法的命令(如果存在);
對於不合法的命令,請輸出一行x error
其中x表示是第幾條命令;
sample
input
8lin 5
rin 6
lin 3
lout
rout
rout
rout
lin 3
output
37 error
hint
第一種方法:用陣列模擬雙向佇列
#include
using
namespace std;
int q[
20010
], w[
10010];
intmain()
else
q[--l]
= a;
}elseif(
strcmp
(str,
"rin")==
0)else
q[++r]
= a;
}elseif(
strcmp
(str,
"lout")==
0)else
if(l <= r)
l++;else
if(l > r)
w[++k]
= i;
}elseif(
strcmp
(str,
"rout")==
0)else
if(r >= l)
r--;else
if(r < l)
w[++k]
= i;}}
for(
int i = l; i <= r; i++
) cout << endl;
if(k!=0)
for(
int i =
1; i <= k; i++
) cout << w[i]
<<
' '<<
"error"
<< endl;
return0;
}
第二種方法:stl
#include
#include
using
namespace std;
intmain()
; cin>>m;
for(i=
1;i<=m;i++
)elseif(
strcmp
(str,
"rin")==
0)elseif(
strcmp
(str,
"lout")==
0)elseif(
strcmp
(str,
"rout")==
0)}while
(!q.
empty()
) cout
1;i<=m;i++
)return0;
}
雙向佇列oj
time limit 1000ms memory limit 65536kb problem description 想想雙向鍊錶 雙向佇列的定義差不多,也就是說乙個佇列的隊尾同時也是隊首 兩頭都可以做出隊,入隊的操作。現在給你一系列的操作,請輸出最後佇列的狀態 命令格式 lin x x表示乙個整數...
oj1466 雙向佇列
description 想想雙向鍊錶 雙向佇列的定義差不多,也就是說乙個佇列的隊尾同時也是隊首 兩頭都可以做出隊,入隊的操作。現在給你一系列的操作,請輸出最後佇列的狀態 命令格式 lin x x表示乙個整數,命令代表左邊進隊操作 rin x 表示右邊進隊操作 rout lout 表示出隊操作 inp...
deque雙向佇列
deque雙向佇列是一種雙向開口的連續線性空間,可以高效的在頭尾兩端插入和刪除元素,deque在介面上和vector非常相似,下面列出deque的常用成員函式 deque的實現比較複雜,內部會維護乙個map 注意!不是stl中的map容器 即一小塊連續的空間,該空間中每個元素都是指標,指向另一段 較...