用栈实现队列,实现Enqueue和Dequeue方法
2008-09-28 14:31 zhangz 阅读(3829) 评论(2) 收藏 举报队列是先进先出,栈是先进后出,使用两个栈来模拟队列:
入队就是入第一个栈,出队是把第一个栈的元素全部出栈到第二个栈里,然后第二个栈出栈,再把剩下的倒回第一个栈。
1
using System;
2
using System.Collections;
3
4
namespace Algorithm
5
{
6
class Program
7
{
8
static void Main(string[] args)
9
{
10
Queueq = new Queue();
11
q.Enqueue(1);
12
q.Enqueue(2);
13
q.Enqueue(3);
14
q.Enqueue(4);
15
Console.WriteLine(q.Dequeue());
16
}
17
}
18
class Queue
19
{
20
private Stack s1=new Stack();
21
private Stack s2=new Stack();
22
23
public void Enqueue(object o)
24
{
25
s1.Push(o);
26
}
27
public object Dequeue()
28
{
29
while (s1.Count > 0)
30
{
31
s2.Push(s1.Pop());
32
}
33
object o = s2.Pop();
34
while (s2.Count > 0)
35
{
36
s1.Push(s2.Pop());
37
}
38
return o;
39
}
40
}
41
}
using System;2
using System.Collections;3

4
namespace Algorithm5
{6
class Program7
{8
static void Main(string[] args)9
{10
Queueq = new Queue();11
q.Enqueue(1);12
q.Enqueue(2);13
q.Enqueue(3);14
q.Enqueue(4);15
Console.WriteLine(q.Dequeue());16
}17
}18
class Queue19
{20
private Stack s1=new Stack();21
private Stack s2=new Stack();22

23
public void Enqueue(object o) 24
{25
s1.Push(o);26
}27
public object Dequeue() 28
{29
while (s1.Count > 0) 30
{31
s2.Push(s1.Pop());32
}33
object o = s2.Pop();34
while (s2.Count > 0) 35
{36
s1.Push(s2.Pop());37
}38
return o;39
}40
}41
}


浙公网安备 33010602011771号