实例对比Stack类与Queue类

一 Queue类实例

新件Windows窗体应用程序QueueExample,程序主窗体如下图所示。

 

编写程序代码,程序完整代码如下所示。

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;
                }
            }
        }
    }
}
运行程序,得到以下执行结果。

 

 

二 Stack类实例

新件Windows窗体应用程序StackExample,程序主窗体如下图所示。

 

编写程序代码,程序完整代码如下所示。

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;
                }
            }
        }
    }
}
运行程序,得到以下执行结果。

 

 

三 结果分析

Queue类以先进先出(FIFO)的结构创建集合,即元素以与进入集合相同的顺序弹出。

 

Stack类以后进先出(LIFO)的结构创建集合,即元素以与进入集合相反的顺序弹出。

 

另外,Stack类和Queue类均含有Peek方法。

Stack类中的Peek方法返回栈中最上面的元素,但不把它从集合中删除;而Queue类中的Peek方法返回队列中最前面的元素,同样不把它从集合中删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值