C#编写一个类实现队列的功能,
在C#编程语言中,创建自定义队列类是一种常见的练习,可以帮助理解数据结构的基础和实现细节。队列是一种先进先出(FIFO,First In First Out)的数据结构,通常用于处理任务调度、数据缓冲等场景。下面我们将详细讨论如何在C#中实现一个简单的队列类,并创建一个测试类来验证其功能。 首先,我们定义了一个名为`Node`的内部类,用于表示队列中的每个元素。这个类包含三个成员: 1. `data`:存储节点的值,类型为整数。 2. `prior`:指向前一个节点的引用,用于维护队列的顺序。 3. `next`:指向后一个节点的引用,同样用于维护顺序。 接着,我们定义了队列类`Queue`,它包含以下成员: 1. `head`:队列的头部节点,即最早入队的元素。 2. `rear`:队列的尾部节点,最新入队的元素。 3. `length`:队列当前的长度,表示队列中元素的数量。 `Queue`类还包含几个关键方法: 1. `EnQueue(int data)`:向队列中添加一个新的元素。如果队列为空,`rear`和`head`都指向新创建的节点;否则,`rear`会指向新创建的节点,并更新`rear.next`。 2. `DeQueue()`:从队列头部移除并返回元素。如果队列为空,则清空`head`和`rear`并返回提示信息;否则,返回`head.data`,更新`head`为下一个节点,并减少`length`。 3. `Print()`:打印队列中的所有元素。遍历整个队列,从`head`开始,直到遇到`null`为止。 为了测试这个自定义队列类,我们需要创建一个测试类。这个测试类应该包含一系列方法来检查队列的基本操作,如添加元素、移除元素、检查队列是否为空以及打印队列。测试代码可以如下所示: ```csharp public class QueueTest { public static void Main() { Queue queue = new Queue(); // 测试EnQueue queue.EnQueue(1); queue.EnQueue(2); queue.EnQueue(3); Console.WriteLine("After enqueue operations:"); queue.Print(); // 测试DeQueue Console.WriteLine("After dequeue:"); Console.WriteLine(queue.DeQueue()); // 应输出 1 queue.Print(); // 测试队列为空 Console.WriteLine("After dequeue again:"); Console.WriteLine(queue.DeQueue()); // 应输出 2 queue.Print(); Console.WriteLine(queue.Length); // 应输出 1 // 测试队列是否为空 if (queue.IsEmpty()) { Console.WriteLine("The queue is now empty."); } else { Console.WriteLine("The queue still has elements."); } // 比较自定义队列与System.Collections.Queue Queue systemQueue = new System.Collections.Queue(); systemQueue.Enqueue(4); systemQueue.Enqueue(5); Console.WriteLine("\nSystem.Collections.Queue:"); Console.WriteLine(systemQueue.Dequeue()); // 应输出 4 Console.WriteLine(systemQueue.Dequeue()); // 应输出 5 } } ``` 这个测试类的`Main`方法首先创建一个`Queue`实例,然后进行一系列操作,如添加元素、移除元素、检查队列状态等。同时,它还与内置的`System.Collections.Queue`类进行了比较,以验证自定义队列类的正确性。 通过这样的测试,我们可以确保自定义队列类实现了预期的功能,同时也学习了如何在C#中创建和测试自定义数据结构。这不仅加深了对数据结构的理解,也有助于提高编程技能。
- 折夜2014-12-29还好,不过自己又写了一个
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助