#T1007. 双向队列练习
双向队列练习
题目描述
本题是双向队列的基本练习。deque 是双向队列(Double ended queue),双向队列可以在队头和队尾入队,同时也可以队头和队尾出队。
本题主要是熟悉以下几个操作:deque::push_back、deque::push_front、deque::operator[]、deque::pop_back、deque::pop_front、deque::size、deque::front、deque::back、deque::erase。
我们将操作定义如下:
push_back表示将在双向队列队尾推入一个数据,该操作后面跟随一个数据 ,表示将 推入到队尾,并输出当前队列的元素个数。push_front表示将在双向队列队首推入一个数据,该操作后面跟随一个数据 ,表示将 推入到队首,并输出当前队列的元素个数。operator[]表示获得指定位置的数据,该操作后面跟随一个数据 ,表示输出队列第 位置数据,注意位置描述从 开始。如果该位置没有数据,输出Invalid,否则输出对应的数据。pop_back表示在双向队列队尾删除元素;如果队列为空,输出Empty。如果队列不为空,删除元素,不做输出。pop_front表示在双向队列队首删除元素;如果队列为空,输出Empty。如果队列不为空,删除元素,不做输出。size表示输出双向队列的数据个数。front表示输出双向队列的队首元素。如果队列为空,输出Empty。如果队列不为空,输出队首元素。back表示输出双向队列的队尾元素。如果队列为空,输出Empty。如果队列不为空,输出队尾元素。erase表示删除指定位置的数据,该操作后面跟随一个数据 ,表示删除队列第 位置数据,注意位置描述从 开始。如果该位置没有数据,输出Invalid,否则删除对应的数据,并输出删除后队列元素个数。
输入
第一行为一个整数 ,表示有多少个操作。。
第二行到第 行,每行一个操作。具体操作描述参考题目描述。保证操作的元素 绝对值不会超过 。
输出
若干行。针对每个操作输出对应结果,每个操作的结果为一行。
如果最后队列不为空,请先从队尾开始,输出队列内所有数据,数据之间用空格隔开。
再从队首开始,输出队内的所有数据,数据之间用空格隔开。
15
pop_back
pop_front
push_back 10
erase 4
operator[] 3
size
back
front
push_front 2
back
front
push_front 1
push_back 15
operator[] 3
erase 2
Empty
Empty
1
Invalid
Invalid
1
10
10
2
10
2
3
4
10
3
15 10 1
1 10 15