一 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方法返回队列中最前面的元素,同样不把它从集合中删除。