使用栈实现队列
栈中的元素采用LIFO (Last In First Out),即后进先出。
队列(Queue)与栈类似,都是采用线性结构存储数据。它们的区别在于,栈采用LIFO方式,而队列采用先进先出,即FIFO(First in First Out)。
所以2个栈交换数据可以达到队列的效果。
具体实现如下:
struct Queue
{
Queue() {}
Queue(std::initializer_list<int> list) : first(list) {};
void push(int value)
{
first.push(value);
}
int pop()
{
if (first.empty())
{
throw std::exception("pop error");
}
while (!first.empty())
{
second.push(first.top());
first.pop();
}
int temp = second.top();
second.pop();
while (!second.empty())
{
first.push(second.top());
second.pop();
}
return temp;
}
stack<int> first;
stack<int> second;
};
int main()
{
Queue que;
que.push(1);
que.push(2);
que.push(3);
que.push(4);
que.push(5);
cout << que.pop() << endl;
cout << que.pop() << endl;
cout << que.pop() << endl;
cout << que.pop() << endl;
getchar();
return 0;
}