首页 > 其他 > 详细

实例对比Stack类与Queue类

时间:2014-02-24 20:24:45      阅读:456      评论:0      收藏:0      [点我收藏+]

一 Queue类实例

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

 bubuko.com,布布扣

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

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

bubuko.com,布布扣 

 

二 Stack类实例

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

 bubuko.com,布布扣

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

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

bubuko.com,布布扣 

 

三 结果分析

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

bubuko.com,布布扣 

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

 bubuko.com,布布扣

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

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

实例对比Stack类与Queue类

原文:http://blog.csdn.net/yl2isoft/article/details/19769253

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!