一 Queue类实例
1 新件Windows窗体应用程序QueueExample,程序主窗体如下图所示。
2 编写程序代码,程序完整代码如下所示。
using System; using System.Collections.Generic; using System.Windows.Forms; namespace QueueExample { public partial class frmQueue : Form { Queue<int> q=new Queue<int>(); public frmQueue() { InitializeComponent(); } //入队操作 private void button1_Click(object sender, EventArgs e) { Random random = new Random(); for(int i=0;i<5;i++) { int r = random.Next(0, 10); q.Enqueue(r); lsvInResult.Items.Add(r.ToString()); } } //出对操作 private void button2_Click(object sender, EventArgs e) { while (true) { if(q.Count > 0) { int i = q.Dequeue(); lsvOutResult.Items.Add(i.ToString()); } else { break; } } } } }3 运行程序,得到以下执行结果。
二 Stack类实例
1 新件Windows窗体应用程序StackExample,程序主窗体如下图所示。
2 编写程序代码,程序完整代码如下所示。
using System; using System.Collections.Generic; using System.Windows.Forms; namespace StackExample { public partial class frmStack : Form { Stack<int> s=new Stack<int>(); public frmStack() { InitializeComponent(); } //入栈操作 private void button1_Click(object sender, EventArgs e) { Random random = new Random(); for(int i=0;i<5;i++) { int r = random.Next(0, 10); s.Push(r); lsvInResult.Items.Add(r.ToString()); } } //出栈操作 private void button2_Click(object sender, EventArgs e) { while (true) { if(s.Count > 0) { int i = s.Pop(); lsvOutResult.Items.Add(i.ToString()); } else { break; } } } } }3 运行程序,得到以下执行结果。
三 结果分析
Queue类以先进先出(FIFO)的结构创建集合,即元素以与进入集合相同的顺序弹出。
Stack类以后进先出(LIFO)的结构创建集合,即元素以与进入集合相反的顺序弹出。
另外,Stack类和Queue类均含有Peek方法。
Stack类中的Peek方法返回栈中最上面的元素,但不把它从集合中删除;而Queue类中的Peek方法返回队列中最前面的元素,同样不把它从集合中删除。
原文:http://blog.csdn.net/yl2isoft/article/details/19769253