队列是先进先出,栈是先进后出,使用两个栈来模拟队列:
入队就是入第一个栈,出队是把第一个栈的元素全部出栈到第二个栈里,然后第二个栈出栈,再把剩下的倒回第一个栈。
using System;
using System.Collections;
namespace Algorithm
{
class Program
{
static void Main(string[] args)
{
Queueq = new Queue();
q.Enqueue(1);
q.Enqueue(2);
q.Enqueue(3);
q.Enqueue(4);
Console.WriteLine(q.Dequeue());
}
}
class Queue
{
private Stack s1=new Stack();
private Stack s2=new Stack();
public void Enqueue(object o)
{
s1.Push(o);
}
public object Dequeue()
{
while (s1.Count > 0)
{
s2.Push(s1.Pop());
}
object o = s2.Pop();
while (s2.Count > 0)
{
s1.Push(s2.Pop());
}
return o;
}
}
}来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12639172/viewspace-466047/ ,如需转载,请注明出处,否则将追究法律责任。