`
nlx0201
  • 浏览: 28802 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

C#数据结构和算法学习系列七----队列、队列的实现和应用

 
阅读更多


队列是一种把数据从表的末端放入并在表的前端移除的数据结构。队列会按照数据项出现的顺序来存储它们。队列是先进先出(FIFO)数据结构的实例。队列用来对提交给操作系统或打印池的任务进行排序,而模拟应用程序则用队列对用户等待队列进行模拟。队列包含两种主要的操作。一个是给队列添加新的数据项,另一个则是把数据项从队列中移除。添加新数据项的操作被称为是Enqueue,而从队列中移除数据项的操作则被称为是Dequeue。Enqueue 操作会在队列的末尾添加一个数据项,而Dequeue 操作则会从队列的
前端(或开始处)移除一个数据项。

(1).Queue类。下面这个Queue 类的实现包含EnQueue 方法、DeQueue 方法、ClearQueue 方法(清除队列)、Peek 方法以及Count 方法,而且还有一个用于此类的默认构造器。

public class CQueue
{
     private ArrayList pqueue;
     public CQueue()
     {
          pqueue = new ArrayList();
     }
     public void EnQueue(object item)
     {
          pqueue.Add(item);
     }
     public void DeQueue()
     {
          pqueue.RemoveAt(0);
     }
     public object Peek()
     {
          return pqueue[0];
     }
     public void ClearQueue()
     {
          pqueue.Clear();
     }
     public int Count()
     {
          return pqueue.Count;
     }
}

(2).Queue的应用

1.几种初始化方式

Queue myQueue = new Queue(100);

Queue myQueue = new Queue(32, 3);

Queue<int> numbers = new Queue<int>();

2.实例应用

using System;
using System.Collections;
using System.IO ;
namespace csqueue
{
     public struct Dancer
     {
          public string name;
          public string sex;
          public void GetName(string n)
          {
               name = n;
          }
          public override string ToString()
          {
               return name;
     }
}
class Class1
{
     static void newDancers(Queue male, Queue female)
     {
          Dancer m, w;
          m = new Dancer();
          w = new Dancer();
          if (male.Count > 0 && female.Count > 0)
          {
               m.GetName(male.Dequeue().ToString());
               w.GetName(female.Dequeue().ToString());
          }
          else if ((male.Count > 0) && (female.Count == 0))
               Console.WriteLine("Waiting on a female dancer.");
          else if ((female.Count > 0) && (male.Count == 0))
               Console.WriteLine("Waiting on a male dancer.");
     }
     static void headOfLine(Queue male, Queue female)
     {
          Dancer w, m;
          m = new Dancer();
          w = new Dancer();
          if (male.Count > 0)
          m.GetName(male.Peek().ToString());
          if (female.Count > 0)
               w.GetName(female.Peek().ToString());
          if (m.name != " " && w.name != "")
               Console.WriteLine("Next in line are: " + m.name + "\t" + w.name);
          else
               if (m.name != "") //!=
                    Console.WriteLine("Next in line is: " + m.name);
               else
                    Console.WriteLine("Next in line is: " + w.name);
     }
     static void startDancing(Queue male, Queue female)
     {
          Dancer m, w;
          m = new Dancer();
          w = new Dancer();
          Console.WriteLine("Dance partners are: ");
          Console.WriteLine();
          for (int count = 0; count <= 3; count++)
          {
               m.GetName(male.Dequeue().ToString());
               w.GetName(female.Dequeue().ToString());
               Console.WriteLine(w.name + "\t" + m.name);
          }
     }
     static void formLines(Queue male, Queue female)
     {
          Dancer d = new Dancer();
          StreamReader inFile;
          inFile = File.OpenText(@"c:\dancers.dat");
          string line;
          while (inFile.Peek() != -1)
          {
               line = inFile.ReadLine();
               d.sex = line.Substring(0, 1);
               d.name = line.Substring(2, line.Length - 2);
               if (d.sex == "M")
                    male.Enqueue(d);
               else
                    female.Enqueue(d);
          }
     }
     static void Main(string[] args)
     {
          Queue males = new Queue();
          Queue females = new Queue();
          formLines(males, females);
          startDancing(males, females);
          if (males.Count > 0 || females.Count > 0)
               headOfLine(males, females);
          newDancers(males, females);
          if (males.Count > 0 || females.Count > 0)
               headOfLine(males, females);
          newDancers(males, females);
          Console.Write(" press enter");
          Console.Read();
     }
}


分享到:
评论

相关推荐

    C#算法和数据结构学习

    其中包括了线性表、栈和队列、串和数组、树和图等数据结构的操作、排序等,非常适合进阶级的朋友学习.其中需要的预备知识数学中的集合、对数、递归等的回顾,还有C#语法中的接口和泛型的温习,从而更快的接受数据...

    数据结构(C#版)很难得的C#进一步学习的资料

    第2章至第6章分别讨论了线性表、栈和队列、串和数组、树型结构和图结构等常用的数据结构及其应用,以及在.NET框架中相应的数据结构;第7、8两章分别讨论了排序和查找常用的各种方法及其应用以及在.NET框架中相应的...

    c#数据结构daquan

    基本任务: 是学习常见的基本数据结构,包括线性表、栈和队列、数组和字符串、树、搜索树、散列表、图和文件等,理解它们的逻辑结构、存储结构,领会在这些数据结构上定义的运算和实现运算的算法。学习和领会内、外...

    数据结构算法

    树操作【中】 算法系列15天速成——第十一天 树操作(上) 算法系列15天速成——第十天 栈 算法系列15天速成——第九天 队列 算法系列15天速成——第八天 线性表【下】 算法系列15天速成——第七天 线性表【上】 ...

    DataStructureAndAlgorithmsInCSharp:使用C#的常见数据结构和算法实现

    使用C#来实现数据结构和算法似乎是多余的,因为C#提供了开发人员所需的一切,使他们可以专注于应用程序层。 尽管C#不是研究和解释数据结构和算法的最佳选择,但它完全能够以所需的深度实现它们。 这种选择是出于...

    数据结构 C#语言版 1

    1 1 1 学习数据结构的必要性 1 1 1 2 基本概念和术语 1 1 2 算法 4 1 2 1算法的特性 4 1 2 2算法的评价标准 5 1 2 3算法的时间复杂度 6 1 3 数学预备知识 7 1 3 1 集合 7 1 3 2 常用的数学术语 8 1 3 3 对数 8 1 3 4...

    数据结构(C#语言版)

    本书分为 8 章,第 1 章介绍了数据结构和算法的基本概念及本书用到的数学和 C#的知 识;第 2 章至第 6 章分别讨论了线性表、栈和队列、串和数组、树型结构和图结构等常用的 数据结构及其应用,以及在.NET 框架中相应...

    c#数据结构(很少下到的资料)

    第2章至第6章分别讨论了线性表、栈和队列、串和数组、树型结构和图结构等常用的数据结构及其应用,以及在.NET框架中相应的数据结构;第7、8两章分别讨论了排序和查找常用的各种方法及其应用以及在.NET框架中相应的...

    睿智汇海C#winform和ASP.NET视频资源速度下载地址

    14. 第13章数据结构与算法(3)-队列栈应用 15. 第14章数据结构与算法(4) 16. 第15章创建Windows窗体应用程序(1) 17. 第16章创建Windows窗体应用程序(2) 18. 第17章数据结构与算法(5) 19. 第18.19章数据结构与...

    《Hello 算法》数据结构与算法教程,支持 Java, C++, Python, Go, JS, TS, C#

    算法代码:我们提供了多种数据结构的实现代码,包括数组、链表、栈、队列、树、图等。这些代码不仅能帮助你理解数据结构的基本概念,而且能让你明白如何在实际情况中应用这些数据结构。 笔记:详细且系统的笔记,...

    数据结构 c#版

    1 1 1 学习数据结构的必要性 1 1 1 2 基本概念和术语 1 1 2 算法 4 1 2 1算法的特性 4 1 2 2算法的评价标准 5 1 2 3算法的时间复杂度 6 1 3 数学预备知识 7 1 3 1 集合 7 1 3 2 常用的数学术语 8 1 3 3 对数 8 1 3 4...

    C# 数据结构与程序设计

    数据结构与程序设计,C#语言表述。 编者在写这本书时遇到了两个问题。第一个问题是关于数据结构教材。应该说关于数 据结构的教材已经很多了。自从美国唐.欧.克努特教授用汇编语言写的《计算机程序设计 技巧》第一...

    DSA:C#中的数据结构和算法

    一个个人项目,它是用C#编写的,具有数据结构和算法的实现,出于好奇和出于学习目的而创建。 要求 .NET Standard 2.0兼容框架 .NET Core 2.0 (仅当您要构建单元测试项目时) 安装 可以在上找到带有.NET Standard ...

    30.数据结构(C#语言版)高清版

    1.1.1 学习数据结构的必要性...1 1.1.2 基本概念和术语...............1 1.2 算法...4 1.2.1算法的特性............................4 1.2.2算法的评价标准....................5 1.2.3算法的时间复杂度...............

    3.数据结构(C#语言版)

    第2章至第6章分别讨论了线性表、栈和队列、串和数组、树型结构和图结构等常用的数据结构及其应用,以及在.NET框架中相应的数据结构;第7、8两章分别讨论了排序和查找常用的各种方法及其应用以及在.NET框架中相应的...

    数据结构(C#语言版)

    第2章至第6章分别讨论了线性表、栈和队列、串和数组、树型结构和图结构等常用的数据结构及其应用,以及在.NET框架中相应的数据结构;第7、8两章分别讨论了排序和查找常用的各种方法及其应用以及在.NET框架中相应的...

    数据结构(c#语言版)

    第2章至第6章分别讨论了线性表、栈和队列、串和数组、树型结构和图结构等常用的数据结构及其应用,以及在.NET框架中相应的数据结构;第7、8两章分别讨论了排序和查找常用的各种方法及其应用以及在.NET框架中相应的...

    数据结构(C#语言版).

    1.1.1 学习数据结构的必要性...................................................................................1 1.1.2 基本概念和术语........................................................................

    数据结构(C#语言)

    1.1.1 学习数据结构的必要性...................................................................................1 1.1.2 基本概念和术语......................................................................

Global site tag (gtag.js) - Google Analytics