C# 队列教程

作者 : 慕源网 本文共3715个字,预计阅读时间需要10分钟 发布时间: 2021-10-28 共470人阅读

C# 中的队列表示对象的先进先出 (FIFO) 集合。队列的一个例子是排队等候的人

System.Collection.Generic 命名空间中的 Queue<T> 类表示 C# 中的队列,其中 T 指定队列中元素的类型。在这篇文章和代码示例中,我解释了 Queue 在 C# 中的使用、Queue 类的属性和方法,以及如何在 C# 中使用这些方法。

C# 队列构造函数

Queue<T> 类有几个重载的构造函数。

Queue<T> 构造函数 – 初始化一个空的 Queue<T> 类的新实例。接下来的几行显示了我们如何创建空队列。

Queue<string> queue = newQueue<string>();

Queue<T> 构造函数 (IEnumerable<T>) – 初始化包含从指定集合复制的元素的 Queue<T> 类的新实例。

string[] courses = { "MCA","MBA", "BCA","BBA", "BTech","MTech" };
Queue<string> queue = newQueue<string>(courses);

Queue<T> 构造函数 (Int32) – 初始化 Queue<T> 类的新实例,该实例为空并具有指定的初始容量。

Queue<string> queue = newQueue<string>(4);

Queue.Count 属性

Count 属性获取 Queue<T> 的元素数。以下代码示例创建一个字符串队列并获取集合中的项目计数。

namespace Queue {
    classProgram {
        staticvoid Main(string[] args) {
            string[] courses = {
                "MCA",
                "MBA",
                "BCA",
                "BBA",
                "BTech",
                "MTech"
            };
            Queue < string > queue1 = newQueue < string > ();
            Queue < string > queue2 = newQueue < string > (courses);
            Queue < string > queue3 = newQueue < string > (4);
            Console.WriteLine("Number of elements in queue1:" + queue1.Count());
            Console.WriteLine("Number of elements in queue2:" + queue2.Count());
            Console.WriteLine("Number of elements in queue3:" + queue3.Count());
        }
    }
}

输出看起来像这样,

Queue.Enqueue 方法

Queue.Enqueue 方法将一个对象添加到 Queue<T> 的末尾。例如,
namespace Queue {
    classProgram {
        staticvoid Main(string[] args) {
            Queue < string > queue1 = newQueue < string > ();
            queue1.Enqueue("MCA");
            queue1.Enqueue("MBA");
            queue1.Enqueue("BCA");
            queue1.Enqueue("BBA");
            Console.WriteLine("The elements in the queue are:");
            foreach(string s in queue1) {
                Console.WriteLine(s);
            }
        }
    }
}

输出 

Queue.Dequeue() 方法

移除并返回 Queue<T> 开头的对象。例如,
namespace Queue {
    classProgram {
        staticvoid Main(string[] args) {
            Queue < string > queue1 = newQueue < string > ();
            queue1.Enqueue("MCA");
            queue1.Enqueue("MBA");
            queue1.Enqueue("BCA");
            queue1.Enqueue("BBA");
            Console.WriteLine("The elements in the queue are:");
            foreach(string s in queue1) {
                Console.WriteLine(s);
            }
            queue1.Dequeue(); //Removes the first element that enter in the queue here the first element is MCA
            queue1.Dequeue(); //Removes MBA
            Console.WriteLine("After removal the elements in the queue are:");
            foreach(string s in queue1) {
                Console.WriteLine(s);
            }
        }
    }
}

输出

Queue.Contain() 方法

确定元素是否在 Queue<T> 中。例如,

namespace Queue {
    classProgram {
        staticvoid Main(string[] args) {
            Queue < string > queue1 = newQueue < string > ();
            queue1.Enqueue("MCA");
            queue1.Enqueue("MBA");
            queue1.Enqueue("BCA");
            queue1.Enqueue("BBA");
            Console.WriteLine("The elements in the queue are:");
            foreach(string s in queue1) {
                Console.WriteLine(s);
            }
            Console.WriteLine("The element MCA is contain in the queue:" + queue1.Contains("MCA"));
            Console.WriteLine("The element BCA is contain in the queue:" + queue1.Contains("BCA"));
            Console.WriteLine("The element MTech is contain in the queue:" + queue1.Contains("MTech"));
        }
    }
}

输出

Queue.Clear() 方法

从 Queue<T> 中移除所有对象。例如,

namespace Queue {
    classProgram {
        staticvoid Main(string[] args) {
            Queue < string > queue1 = newQueue < string > ();
            queue1.Enqueue("MCA");
            queue1.Enqueue("MBA");
            queue1.Enqueue("BCA");
            queue1.Enqueue("BBA");
            Console.WriteLine("The elements in the queue are:" + queue1.Count());
            queue1.Clear();
            Console.WriteLine("The elements in the queue are after the clear method:" + queue1.Count());
        }
    }
}

输出

Queue.Peek 方法

返回 Queue<T> 开头的对象而不删除它。例如,
namespace Queue {
    classProgram {
        staticvoid Main(string[] args) {
            Queue < string > queue1 = newQueue < string > ();
            queue1.Enqueue("MCA");
            queue1.Enqueue("MBA");
            queue1.Enqueue("BCA");
            queue1.Enqueue("BBA");
            Console.WriteLine("Peek the first item from the queue is:" + queue1.Peek());
            queue1.Dequeue();
            Console.WriteLine("Peek the next item from the queue is:" + queue1.Peek());
        }
    }
}

输出

Queue.ToArray() 方法

将 Queue<T> 元素复制到新数组。例如,
namespace Queue {
    classProgram {
        staticvoid Main(string[] args) {
            Queue < string > queue1 = newQueue < string > ();
            queue1.Enqueue("MCA");
            queue1.Enqueue("MBA");
            queue1.Enqueue("BCA");
            queue1.Enqueue("BBA");
            Console.WriteLine("The queue elements are:");
            foreach(string s in queue1) {
                Console.WriteLine(s);
            }
            Queue < string > queue2 = newQueue < string > (queue1.ToArray());
            Console.WriteLine("\nContents of the copy");
            foreach(string n in queue2) {
                Console.WriteLine(n);
            }
        }
    }
}

输出

概括

在本文中,我解释了 Queue<> 类以及它的各种方法和属性。

慕源网 » C# 队列教程

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录