- 如何创建栈?
- 如何从栈中删除元素?
- 如何获得栈的最高元素?
- 如何检查栈中元素的可用性?
- 通用栈与非通用栈
- C#
- C#
- C#
- C#
文章图片
【C#栈Stack如何使用(代码示例指南)】下图说明了Stack类的层次结构:
文章图片
重要事项:
- Stack类实现了IEnumerable, ICollection和可克隆接口。
- 当你在列表中添加项目时, 该项目称为推动元素。
- 当你删除它时, 它称为弹出元素。
- 栈的容量是栈可以容纳的元素数量。将元素添加到栈后, 容量会根据需要通过重新分配自动增加。
- 在栈中, 允许你存储重复的元素。
- 栈接受null作为引用类型的有效值。
- Stack():该构造函数用于创建Stack类的实例, 该实例为空并具有默认初始容量。
- 栈(ICollection):此构造函数用于创建Stack类的实例, 该实例包含从指定集合中复制的元素, 并且具有与复制的元素数量相同的初始容量。
- 栈(Int32):此构造函数用于创建Stack类的实例, 该实例为空并具有指定的初始容量或默认初始容量(以较大者为准)。
第1步:
包括
系统集合
借助using关键字在程序中命名空间。
using System.Collections;
第2步:使用Stack类创建一个栈, 如下所示:
Stack stack_name = new Stack();
第三步:如果要在栈中添加元素, 请使用推()在栈中添加元素的方法。如下例所示。
例子:
C#
// C# program to illustrate how to
// create a stack
using System;
using System.Collections;
class GFG {
// Main Method
static public void Main()
{
// Create a stack
// Using Stack class
Stack my_stack = new Stack();
// Adding elements in the Stack
// Using Push method
my_stack.Push( "Geeks" );
my_stack.Push( "lsbin" );
my_stack.Push( 'G' );
my_stack.Push( null );
my_stack.Push(1234);
my_stack.Push(490.98);
// Accessing the elements
// of my_stack Stack
// Using foreach loop
foreach ( var elem in my_stack)
{
Console.WriteLine(elem);
}
}
}
输出如下:
490.98
1234G
lsbin
Geeks
如何从栈中删除元素? 在栈中, 允许你从栈中删除元素。 Stack类提供了两种不同的方法来删除元素, 这些方法是:
- 明确:此方法用于从栈中删除所有对象。
- 流行音乐:此方法删除栈的开始元素。
C#
// C# program to illustrate how to
// remove elements from the stack
using System;
using System.Collections;
class GFG {
// Main Method
static public void Main()
{
// Create a stack
// Using Stack class
Stack my_stack = new Stack();
// Adding elements in the Stack
// Using Push method
my_stack.Push( "Geeks" );
my_stack.Push( "lsbin" );
my_stack.Push( "geeks23" );
my_stack.Push( "lsbin" );
Console.WriteLine( "Total elements present in" +
" my_stack: {0}" , my_stack.Count);
my_stack.Pop();
// After Pop method
Console.WriteLine( "Total elements present in " +
"my_stack: {0}" , my_stack.Count);
// Remove all the elements
// from the stack
my_stack.Clear();
// After Pop method
Console.WriteLine( "Total elements present in " +
"my_stack: {0}" , my_stack.Count);
}
}
输出如下:
Total elements present in my_stack: 4
Total elements present in my_stack: 3
Total elements present in my_stack: 0
如何获得栈的最高元素? 在Stack中, 可以使用Stack类提供的以下方法轻松地找到栈的最顶层元素:
- 流行音乐:该方法通过修改返回栈的开始处的对象, 这意味着该方法将删除栈中最顶层的元素。
- 窥视:此方法在不删除对象的情况下将其返回到栈的开头。
C#
// C# program to illustrate how to
// get topmost elements of the stack
using System;
using System.Collections;
class GFG {
// Main Method
static public void Main()
{
// Create a stack
// Using Stack class
Stack my_stack = new Stack();
// Adding elements in the Stack
// Using Push method
my_stack.Push( "Geeks" );
my_stack.Push( "lsbin" );
my_stack.Push( "geeks23" );
my_stack.Push( "lsbin" );
Console.WriteLine( "Total elements present in" +
" my_stack: {0}" , my_stack.Count);
// Obtain the topmost element
// of my_stack Using Pop method
Console.WriteLine( "Topmost element of my_stack"
+ " is: {0}" , my_stack.Pop());
Console.WriteLine( "Total elements present in" +
" my_stack: {0}" , my_stack.Count);
// Obtain the topmost element
// of my_stack Using Peek method
Console.WriteLine( "Topmost element of my_stack " +
"is: {0}" , my_stack.Peek());
Console.WriteLine( "Total elements present " +
"in my_stack: {0}" , my_stack.Count);
}
}
输出如下:
Total elements present in my_stack: 4
Topmost element of my_stack is: lsbin
Total elements present in my_stack: 3
Topmost element of my_stack is: geeks23
Total elements present in my_stack: 3
如何检查栈中元素的可用性? 在栈中, 你可以使用来检查给定元素是否存在包含()方法。换句话说, 如果要搜索给定栈中的元素, 请使用Contains()方法。如果元素存在于栈中, 则此方法返回true。否则, 返回false。
例子:
C#
// C# program to illustrate how
// to check element present in
// the stack or not
using System;
using System.Collections;
class GFG {
// MainMethod
static public void Main()
{
// Create a stack
// Using Stack class
Stack my_stack = new Stack();
// Adding elements in the Stack
// Using Push method
my_stack.Push( "Geeks" );
my_stack.Push( "lsbin" );
my_stack.Push( "geeks23" );
my_stack.Push( "lsbin" );
// Checking if the element is
// present in the Stack or not
if (my_stack.Contains( "lsbin" ) == true )
{
Console.WriteLine( "Element is found...!!" );
}
else
{
Console.WriteLine( "Element is not found...!!" );
}
}
}
输出如下:
Element is found...!!
通用栈与非通用栈
通用栈 |
非通用栈 |
---|---|
通用栈在System.Collections.Generic命名空间下定义。 | 非通用栈在System.Collections命名空间下定义。 |
通用栈只能存储相同类型的元素。 | 非通用栈可以存储相同类型或不同类型的元素。 |
需要定义栈中元素的类型。 | 无需定义栈中元素的类型。 |
这是类型安全的。 | 它不是类型安全的。 |
推荐阅读
- 如何理解C语言中的register关键字()
- materialize CSS如何实现下拉菜单()
- 找到一个元素,它前面的所有元素都比它小,后面的所有元素都比它大
- 算法设计(最小正方形可均匀切割矩形)
- OOP编程(C#数据抽象详细指南)
- 软件工程|迭代瀑布模型介绍
- HTML如何使用块和内联元素()
- 如何理解Java主线程(详细指南)
- Python如何处理异常和错误()