C#中的队列Queue与堆栈Stack

下面是关于C#中的队列Queue与堆栈Stack的完整攻略。

栈和队列是什么?

  • 栈(Stack)是一种有序的数据集合,新添加的或待删除的元素都保存移位顶部,称作栈顶,而现有的元素都在栈底。这种操作叫做LIFO(Last in First Out,后进先出)。栈的应用极为广泛,如比较好的表达中缀表达式、进行函数调用和返回数据等操作。

  • 队列(Queue)是一种有序的数据集合,类似于排队,每个元素都被添加在队尾,而从队列中移除元素的操作则是从队首进行的,即FIFO(First In First Out,先进先出)。

使用堆栈Stack

C#的Stack类表示后进先出的栈集合。可以使用以下代码创建一个空栈:

Stack<string> myStack = new Stack<string>();

堆栈的常见操作如下:

  • Push(T item):将item添加进堆栈。
  • Pop():移除并返回堆栈的顶部元素。
  • Peek():返回堆栈的顶部元素,而不移除它。
  • Count:获取堆栈中的元素数量。

以下代码展示了一些堆栈的常见操作,并输出了堆栈中的元素:

Stack<string> myStack = new Stack<string>();
myStack.Push("Stack");
myStack.Push("is");
myStack.Push("a");
myStack.Push("great");
myStack.Push("data");
myStack.Push("structure");

// 输出堆栈中的元素
foreach (string item in myStack)
{
    Console.WriteLine(item);
}

// 移除并输出堆栈的顶部元素
Console.WriteLine(myStack.Pop());

// 输出堆栈中的元素
foreach (string item in myStack)
{
    Console.WriteLine(item);
}

// 返回堆栈的顶部元素,而不移除它
Console.WriteLine(myStack.Peek());

// 输出堆栈中的元素
foreach (string item in myStack)
{
    Console.WriteLine(item);
}

// 获取堆栈中的元素数量
Console.WriteLine("元素数量:" + myStack.Count);

这段代码的输出结果如下:

structure
data
great
a
is
Stack
structure
data
great
a
is
Stack
Stack
structure
data
great
a
is

使用队列Queue

C#的Queue类代表一个先进先出的队列。可以使用以下代码创建一个空队列:

Queue<string> myQueue = new Queue<string>();

队列的常见操作如下:

  • Enqueue(T item):在队列末尾添加一个元素。
  • Dequeue():移除并返回队列的第一个元素。
  • Peek():返回队列的第一个元素,而不移除它。
  • Count:获取队列中的元素数量。

以下代码展示了一些队列的常见操作,并输出了队列中的元素:

Queue<string> myQueue = new Queue<string>();
myQueue.Enqueue("Queue");
myQueue.Enqueue("is");
myQueue.Enqueue("a");
myQueue.Enqueue("great");
myQueue.Enqueue("data");
myQueue.Enqueue("structure");

// 输出队列中的元素
foreach (string item in myQueue)
{
    Console.WriteLine(item);
}

// 移除并输出队列的第一个元素
Console.WriteLine(myQueue.Dequeue());

// 输出队列中的元素
foreach (string item in myQueue)
{
    Console.WriteLine(item);
}

// 返回队列的第一个元素,而不移除它
Console.WriteLine(myQueue.Peek());

// 输出队列中的元素
foreach (string item in myQueue)
{
    Console.WriteLine(item);
}

// 获取队列中的元素数量
Console.WriteLine("元素数量:" + myQueue.Count);

这段代码的输出结果如下:

Queue
is
a
great
data
structure
is
a
great
data
structure
is
a
great
data
structure
元素数量:5

这就是关于C#中的队列Queue与堆栈Stack的完整攻略,提供了堆栈与队列的定义、常见操作和应用两条实例。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#中的队列Queue与堆栈Stack - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • .NET几种微服务框架,你用过吗?

    最近有群友问,.NET有哪些微服务框架?.NET的微服务框架还真不多,一般企业都会自己搭建微服务框架,或者基于其它框架搭建微服务(比如abp)。本文将介绍几种微服务框架,供大家学习参考。 一、Service Fabric 简介: Service Fabric 是一个微服务框架,它由微软开发并托管在 Azure 上。它提供了一种分布式系统的方式,允许开发人员在…

    C# 2023年5月11日
    00
  • C# websocket及时通信协议的实现方法示例

    下面我们详细讲解“C# WebSocket及时通信协议的实现方法示例”的完整攻略。 1. WebSocket 协议介绍 WebSocket 协议是一种在单个 TCP 连接上进行全双工通信的协议,它可以在客户端和服务器之间建立持久性的连接,以支持双向实时消息传递。它可以通过 HTTP/1.1 中的 Upgrade 头字段和 Connection 头字段来进行开…

    C# 2023年6月7日
    00
  • c# 几个常见的TAP异步操作

    关于C#中常见的TAP异步操作,我们可以分为如下几个方面进行详细讲解: 1. TAP(Task-based Asynchronous Pattern)异步操作 TAP即Task-based Asynchronous Pattern,是一种处理异步操作的方法模式,它可以方便地将异步操作以任务(Task)的形式进行组织和管理。一般地,TAP异步操作包含以下几个步…

    C# 2023年6月6日
    00
  • c# Invoke和BeginInvoke 区别分析

    在C#中,Invoke和BeginInvoke都是用于在UI线程上执行委托的方法。它们的主要区别在于调用方式和执行效果。本文将介绍Invoke和BeginInvoke的区别,并提供两个示例程序。 Invoke和BeginInvoke的区别 Invoke和BeginInvoke都是用于在UI线程上执行委托的方法。它们的主要区别在于调用方式和执行效果。 Invo…

    C# 2023年5月15日
    00
  • asp.net javascript 文件无刷新上传实例代码

    下面是关于“asp.net javascript 文件无刷新上传实例代码”的详细攻略。 简介 asp.net javascript 文件无刷新上传是一种实现无需页面刷新即可上传文件的方法。它使用了 AJAX 技术并结合了 ASP.NET 的后台处理功能,使得文件上传变得更加简单和方便。 实现步骤 1. 前端页面 首先,在前端页面上需要设置一个表单,其中包括一…

    C# 2023年5月31日
    00
  • Unity ScrollView实现无限循环效果

    下面是详细的“Unity ScrollView实现无限循环效果”的攻略: 1. 原理介绍 ScrollView是Unity中非常常用的滚动显示组件,但是如果要实现无限循环效果,需要对ScrollView进行改造。基本的思路是:在原有的ScrollView上拓展一个滑动方向的循环缓存列表,同时动态修改ScrollView的内容来保证显示的物品时刻与缓存列表中的…

    C# 2023年6月3日
    00
  • .Net MVC将Controller数据传递到View

    在.Net MVC中,Controller通过Model来向View传递数据,Model通常是一个类,保存着Controller需要向View传递的数据,在Controller中创建Model,将需要传递的数据赋值给Model,再将Model传递给View。 下面我们来详细阐述“.Net MVC将Controller数据传递到View”的完整攻略: 在Con…

    C# 2023年5月31日
    00
  • C#内存管理CLR深入讲解(下篇)

    C#内存管理CLR深入讲解(下篇)攻略 什么是CLR CLR(Common Language Runtime)是Microsoft .NET Framework的基础组件之一,负责管理运行在.NET Framework下的所有程序的执行,GC等。它是一个托管式执行环境,意味着它能够管理程序的内存分配和释放,使开发人员可以专注于业务逻辑的编写,而不需考虑内存管…

    C# 2023年5月31日
    00
合作推广
合作推广
分享本页
返回顶部