C# Queue类如何实现入队操作与双端队列功能

来源:网络学院作者:相泽南头衔:网络博主
导读:本期聚焦于小伙伴创作的《C# Queue类如何实现入队操作与双端队列功能》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《C# Queue类如何实现入队操作与双端队列功能》有用,将其分享出去将是对创作者最好的鼓励。

C#中的Queue类是System.Collections.Generic命名空间下提供的先进先出集合类型,主要用于按顺序存储和取出元素,而入队操作是向队列末尾添加元素的核心方法。除了标准的单端Queue,C#也提供了支持两端操作的双端队列类型,满足更多场景的需求。

C# Queue类如何实现入队操作与双端队列功能

Queue类的入队操作

Queue类的入队操作通过Enqueue方法实现,该方法接收一个泛型参数,即要添加到队列中的元素,添加后元素会位于队列的尾部,后续通过Dequeue方法取出时,会先取出最早入队的元素。

基础入队示例

以下代码展示了Queue的基础入队和出队操作:

using System;
using System.Collections.Generic;

namespace QueueDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建整数类型的Queue实例
            Queue<int> numberQueue = new Queue<int>();
            
            // 执行入队操作
            numberQueue.Enqueue(10);
            numberQueue.Enqueue(20);
            numberQueue.Enqueue(30);
            
            Console.WriteLine("当前队列元素数量:" + numberQueue.Count);
            
            // 执行出队操作
            int firstElement = numberQueue.Dequeue();
            Console.WriteLine("出队的元素:" + firstElement);
            Console.WriteLine("出队后队列元素数量:" + numberQueue.Count);
        }
    }
}

入队操作的特性

  • 入队操作的时间复杂度为O(1),除非队列的容量需要扩容,此时会触发数组复制,时间复杂度变为O(n)。
  • Queue类的容量默认初始值为10,当元素数量超过容量时,会自动扩容为原来的两倍。
  • 入队操作不会修改已有元素的位置,只会在队列尾部追加新元素。

C#中的双端队列实现

C#中没有直接命名为Deque的内置类,但是System.Collections.Generic命名空间下的LinkedList<T>类可以实现双端队列的所有功能,同时.NET 6及以上版本还提供了System.Collections.Deque<T>类型,不过更常用的还是通过LinkedList实现双端队列。

LinkedList实现双端队列

LinkedList支持在头部和尾部同时添加和移除元素,完全符合双端队列的特性,对应的操作方法如下:

操作方法说明
队尾入队AddLast向双端队列的尾部添加元素
队头入队AddFirst向双端队列的头部添加元素
队尾出队RemoveLast移除双端队列尾部的元素并返回
队头出队RemoveFirst移除双端队列头部的元素并返回

双端队列使用示例

以下代码展示了用LinkedList实现双端队列的操作:

using System;
using System.Collections.Generic;

namespace DequeDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建LinkedList作为双端队列
            LinkedList<string> deque = new LinkedList<string>();
            
            // 队尾入队
            deque.AddLast("元素1");
            deque.AddLast("元素2");
            // 队头入队
            deque.AddFirst("元素0");
            
            Console.WriteLine("双端队列当前元素:");
            foreach (var item in deque)
            {
                Console.WriteLine(item);
            }
            
            // 队头出队
            deque.RemoveFirst();
            Console.WriteLine("队头出队后元素:");
            foreach (var item in deque)
            {
                Console.WriteLine(item);
            }
            
            // 队尾出队
            deque.RemoveLast();
            Console.WriteLine("队尾出队后元素:");
            foreach (var item in deque)
            {
                Console.WriteLine(item);
            }
        }
    }
}

Queue与双端队列的选择

如果只需要先进先出的场景,比如任务排队、消息缓冲,优先选择Queue类,它的实现更简单,开销更小。如果需要在队列两端都进行添加和移除操作,比如滑动窗口、撤销重做功能,就选择双端队列实现。

注意:Queue的Enqueue方法不允许添加null元素,而LinkedList作为双端队列使用时可以添加null值,使用时需要根据需求做校验。

C#Queue入队双端队列Deque修改时间:2026-06-19 10:03:26

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。