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日

相关文章

  • C#遍历操作系统下所有驱动器的方法

    1.获得系统下所有驱动器列表 在C#中,我们可以使用DriveInfo类来获取系统下的所有驱动器信息。这个类提供了许多关于驱动器的属性,例如驱动器标签、驱动器类型、驱动器格式和可用空间等等。下面是获取系统下所有驱动器列表的代码示例: using System.IO; //… DriveInfo[] allDrives = DriveInfo.GetDri…

    C# 2023年6月7日
    00
  • ASP.NET Core MVC 从入门到精通之接化发(二)

    随着技术的发展,ASP.NET Core MVC也推出了好长时间,经过不断的版本更新迭代,已经越来越完善,本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容,适用于初学者,在校毕业生,或其他想从事ASP.NET Core MVC 系统开发的人员。 经过前两篇文章的讲解,初步了解ASP.NET Core MVC项目创建,启…

    C# 2023年4月18日
    00
  • Angular4 反向代理Details实践

    Angular是一种流行的Web应用程序框架,它提供了许多功能和工具来帮助开发人员构建高效的Web应用程序。在开发Angular应用程序时,我们可能需要使用反向代理来解决跨域请求的问题。本文将提供详解“Angular4反向代理Details实践”的完整攻略,包括如何配置反向代理、如何在Angular应用程序中使用反向代理等。 配置反向代理 要配置反向代理,我…

    C# 2023年5月15日
    00
  • Unity Sockect实现画面实时传输案例原理解析

    下面给出详细讲解“Unity Sockect实现画面实时传输案例原理解析”的完整攻略。 简介 在很多应用场景中,我们需要将实时的图像或视频流传输到另一个终端,比如远程监控、视频会议、VR/AR等应用。而Unity Sockect实现画面实时传输正是一种可以实现这种需求的方法。 原理 服务端 在服务端,我们需要使用Socket来监听一个端口,等待客户端的连接。…

    C# 2023年6月3日
    00
  • springboot2整合redis使用lettuce连接池的方法(解决lettuce连接池无效问题)

    下面我来详细讲解一下“springboot2整合redis使用lettuce连接池的方法(解决lettuce连接池无效问题)”的完整攻略。 环境准备 JDK8及以上 SpringBoot2.0及以上 Redis 5.0及以上 Lettuce及其连接池 添加依赖 在pom.xml文件中添加以下依赖: <dependency> <groupId…

    C# 2023年6月1日
    00
  • 深入分析C# Task

    深入分析C# Task攻略 什么是C# Task? C# Task是一种异步编程模型,用于执行长时间运行的计算或I/O操作。Task API提供了执行和计划多个异步操作的方法,例如等待任务完成、等待任意完成,或等待任意取消。Task API是.NET Framework 4.5版本中Task Parallel Library (TPL)的一部分。 如何使用T…

    C# 2023年5月15日
    00
  • 在Winform分页控件中集成保存用户列表显示字段及宽度调整设置

    在Winform的分页控件里面,我们提供了很多丰富的功能,如常规分页,中文转义、导出Excel、导出PDF等,基于DevExpress的样式的分页控件,我们在其上面做了不少封装,以便更好的使用,其中就包括集成保存用户列表显示字段及宽度调整设置。本篇随笔介绍这个实现的过程,通过在当前程序中序列化方式存储一个记录用户设置的文件,提供介质的存储和加载处理。 1、集…

    C# 2023年5月6日
    00
  • C#直线的最小二乘法线性回归运算实例

    C#直线的最小二乘法线性回归运算实例攻略 简介 在数据分析和模型建立过程中,直线的最小二乘法线性回归是一个比较常见的算法。在C#中,我们可以使用MathNet库来进行这个运算。 步骤 第一步:安装MathNet库 我们可以在Visual Studio的Nuget包管理器里搜索MathNet库,并安装依赖。 第二步:引入命名空间 在代码文件的头部,我们需要引入…

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