queue单向队列与栈有点类似,一个是在同一端存取数据,另一个是在一端存入数据,另一端取出数据。单向队列中的数据是先进先出(First In First Out,FIFO)。在STL中,单向队列也是以别的容器作为底部结构,再将接口改变,使之符合单向队列的特性就可以了。因此实现也是非常方便的。下面就给出单向队列的函数列表和VS2008中单向队列的源代码。单向队列一共6个常用函数(front()、back()、push()、pop()、empty()、size()),与栈的常用函数较为相似。
成员函数
(1)T& back()
返回队列最后一个元素
(2)const T& back()const
返回队列最后一个元素
(3)bool empty()const
如果队列为空,返回true,否则返回为false
(4)T& front()
返回队列第一个元素
const T& front()const
返回队列第一个元素
(5)void pop()
移去队列中的第一个元素
(6)void push(const T& el)
在队列尾部插入元素el
(7)queue()
创建一个空队列
(8)size_type size()const
返回队列中元素数目
template<class T, class container = deque<T>>
class Queue
{
public:
Queue()
{}
void Push(const T& s)
{
_con.push_back();
}
void Pop()
{
_con.pop_front();
}
size_t Size()const
{
return _con.size();
}
bool Empty()const
{
return _con.empty();
}
T& Front()
{
return _con.front();
}
T& Front()const
{
return _con.front();
}
T& Back()
{
return _con.back();
}
T& Back()const
{
return _con.back();
}
private:
container _con;
};
用list实现:
#include <iostream>
using namespace std;
#pragma once
template<class T>
struct ListNode
{
ListNode(const T& data = T())
: _prev(0)
, _next(0)
, _data(data)
{}
ListNode<T>* _prev;
ListNode<T>* _next;
T _data;
};
template<class T, class Ref, class Ptr>
class __ListIterator__
{
typedef __ListIterator