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# List生成Txt文档并且读取Txt文档封装List

    生成Txt文档并且读取Txt文档封装List 是一个非常常见的需求,一般使用C#中的File和List类就可以很容易地完成。 以下是具体的步骤: 1. 创建List对象 首先,在C#中创建一个List对象来存储要写入到文本文件中的元素,我们可以通过new关键字来创建一个字符串类型的List对象,例如: List<string> list = ne…

    C# 2023年6月7日
    00
  • c# 死锁和活锁的发生及避免

    C# 死锁和活锁的发生及避免攻略 什么是死锁和活锁 死锁和活锁都是多线程并发编程中经常遇到的问题。 死锁 死锁指的是两个或更多的线程被永久地阻塞,无法继续执行,因为每个线程都在等待其他线程释放资源。简单来说,就是线程之间互相占用对方需要的资源,并不释放,而导致程序无限等待下去。 活锁 活锁指的是线程虽然没有被阻塞,但是他们却无法继续前进,因为它们总是在响应其…

    C# 2023年6月7日
    00
  • asp.net发送邮件示例分享

    接下来我为大家详细讲解“ASP.NET发送邮件示例分享”的完整攻略。 一、前置条件 在进行 ASP.NET 发送邮件的示例分享之前,你需要完成以下两个前置条件: 邮箱设置:首先你需要有一个可用的邮箱账号,并设置好该邮箱的SMTP服务器地址、端口号、登录身份等相关配置信息。 安装Mail类库:为了方便 ASP.NET 开发者使用邮件发送功能,.NET 提供了一…

    C# 2023年6月3日
    00
  • 改进c# 代码的五个技巧(二)

    当我们编写 C# 代码时,我们总是希望写出性能更好、更简单、更具可读性的代码。在这篇文章中,我们会介绍五个技巧,这些技巧可以帮助你完善你的 C# 代码。 1. 使用局部变量代替复杂的表达式 复杂的表达式往往会使代码难以理解和维护。使用局部变量来存储这些表达式的值可以帮助我们避免这个问题。例如,下面的代码使用了一个复杂的 LINQ 表达式来计算一系列数字的平均…

    C# 2023年5月15日
    00
  • C# Stream.Flush – 刷新流

    Stream.Flush 方法的作用是将流中的所有缓冲数据都写入其目标(通常是磁盘、网络或其他设备),并清空缓冲区。在调用 Flush 方法后,流可能会保留部分或所有已读取或写入数据的缓存区域,以便再次读取或写入最后部分数据时能够快速访问。 Flush 方法的使用方法如下: // 实例化一个文件流读取器 using (FileStream fileStrea…

    C# 2023年4月19日
    00
  • C# String.Length方法: 获取字符串的长度

    String.Length是C#中用于获取字符串长度的属性,它的作用是返回字符串中字符的个数,这个长度计数包括空格和特殊字符。 下面介绍一下String.Length的使用方法: 语法格式 字符串.Length 返回值类型 Int32 示例一 string str = "hello world"; int length = str.Len…

    C# 2023年4月19日
    00
  • C#使用FileSystemWatcher控件实现的文件监控功能示例

    在C#中,可以使用FileSystemWatcher控件实现文件监控功能。FileSystemWatcher控件可以监视指定目录中的文件和子目录的更改,并在发生更改时引发事件。本文将提供详解如何使用FileSystemWatcher控件实现文件监控功能的完整攻略,包括如何创建FileSystemWatcher控件、如何设置监视目录和文件类型、如何处理File…

    C# 2023年5月15日
    00
  • c# 向MySQL添加数据的两种方法

    当使用C#编程时,我们有多种方法可以将数据添加到MySQL数据库中。下面将介绍两种常见方法: 方法一:使用MySQL连接器添加数据 引入MySQL连接器:在C#程序中添加MySql.Data.MySqlClient引用,可以使用 Nuget 引用该程序集来下载最新的MySQL驱动程序版本 创建MySQL连接对象:使用连接器创建MySQLConnection对…

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