队列是一种把数据从表的末端放入并在表的前端移除的数据结构。队列会按照数据项出现的顺序来存储它们。队列是先进先出(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#语法中的接口和泛型的温习,从而更快的接受数据...
第2章至第6章分别讨论了线性表、栈和队列、串和数组、树型结构和图结构等常用的数据结构及其应用,以及在.NET框架中相应的数据结构;第7、8两章分别讨论了排序和查找常用的各种方法及其应用以及在.NET框架中相应的...
基本任务: 是学习常见的基本数据结构,包括线性表、栈和队列、数组和字符串、树、搜索树、散列表、图和文件等,理解它们的逻辑结构、存储结构,领会在这些数据结构上定义的运算和实现运算的算法。学习和领会内、外...
树操作【中】 算法系列15天速成——第十一天 树操作(上) 算法系列15天速成——第十天 栈 算法系列15天速成——第九天 队列 算法系列15天速成——第八天 线性表【下】 算法系列15天速成——第七天 线性表【上】 ...
使用C#来实现数据结构和算法似乎是多余的,因为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...
本书分为 8 章,第 1 章介绍了数据结构和算法的基本概念及本书用到的数学和 C#的知 识;第 2 章至第 6 章分别讨论了线性表、栈和队列、串和数组、树型结构和图结构等常用的 数据结构及其应用,以及在.NET 框架中相应...
第2章至第6章分别讨论了线性表、栈和队列、串和数组、树型结构和图结构等常用的数据结构及其应用,以及在.NET框架中相应的数据结构;第7、8两章分别讨论了排序和查找常用的各种方法及其应用以及在.NET框架中相应的...
14. 第13章数据结构与算法(3)-队列栈应用 15. 第14章数据结构与算法(4) 16. 第15章创建Windows窗体应用程序(1) 17. 第16章创建Windows窗体应用程序(2) 18. 第17章数据结构与算法(5) 19. 第18.19章数据结构与...
算法代码:我们提供了多种数据结构的实现代码,包括数组、链表、栈、队列、树、图等。这些代码不仅能帮助你理解数据结构的基本概念,而且能让你明白如何在实际情况中应用这些数据结构。 笔记:详细且系统的笔记,...
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#编写的,具有数据结构和算法的实现,出于好奇和出于学习目的而创建。 要求 .NET Standard 2.0兼容框架 .NET Core 2.0 (仅当您要构建单元测试项目时) 安装 可以在上找到带有.NET Standard ...
1.1.1 学习数据结构的必要性...1 1.1.2 基本概念和术语...............1 1.2 算法...4 1.2.1算法的特性............................4 1.2.2算法的评价标准....................5 1.2.3算法的时间复杂度...............
第2章至第6章分别讨论了线性表、栈和队列、串和数组、树型结构和图结构等常用的数据结构及其应用,以及在.NET框架中相应的数据结构;第7、8两章分别讨论了排序和查找常用的各种方法及其应用以及在.NET框架中相应的...
第2章至第6章分别讨论了线性表、栈和队列、串和数组、树型结构和图结构等常用的数据结构及其应用,以及在.NET框架中相应的数据结构;第7、8两章分别讨论了排序和查找常用的各种方法及其应用以及在.NET框架中相应的...
第2章至第6章分别讨论了线性表、栈和队列、串和数组、树型结构和图结构等常用的数据结构及其应用,以及在.NET框架中相应的数据结构;第7、8两章分别讨论了排序和查找常用的各种方法及其应用以及在.NET框架中相应的...
1.1.1 学习数据结构的必要性...................................................................................1 1.1.2 基本概念和术语........................................................................
1.1.1 学习数据结构的必要性...................................................................................1 1.1.2 基本概念和术语......................................................................