堆栈代表一个last-in,先出对象集合。当您需要 last-in、first-out 访问项目时使用它。当您在列表中添加项目时,称为推送该项目;当您删除该项目时,称为弹出该项目。此类位于 System.Collections 命名空间下。
Stack类的特点:
- 栈的容量是指栈可以容纳的元素的数量。当元素添加到堆栈时,容量会根据需要通过重新分配自动增加。
- 如果 Count 小于堆栈的容量,则 Push 是O(1)操作。如果需要增加容量来容纳新元素,Push 就变成了在)操作,其中n是计数。流行音乐是一个O(1)操作。
- Stack 接受 null 作为有效值并允许重复元素。
Constructors
构造函数 | 说明 |
---|---|
Stack() | 初始化 Stack 类的一个新实例,该实例为空且具有默认初始容量。 |
Stack(ICollection) | 初始化 Stack 类的新实例,该实例包含从指定集合复制的元素,并具有与复制的元素数相同的初始容量。 |
堆栈(Int32) | 初始化 Stack 类的新实例,该实例为空且具有指定初始容量或默认初始容量(以较大者为准)。 |
例子:
// C# code to create a Stack
using System;
using System.Collections;
class GFG {
// Driver code
public static void Main()
{
// Creating a Stack
Stack myStack = new Stack();
// Inserting the elements into the Stack
myStack.Push("1st Element");
myStack.Push("2nd Element");
myStack.Push("3rd Element");
myStack.Push("4th Element");
myStack.Push("5th Element");
myStack.Push("6th Element");
// Displaying the count of elements
// contained in the Stack
Console.Write("Total number of elements in the Stack are : ");
Console.WriteLine(myStack.Count);
// Displaying the top element of Stack
// without removing it from the Stack
Console.WriteLine("Element at the top is : " + myStack.Peek());
// Displaying the top element of Stack
// without removing it from the Stack
Console.WriteLine("Element at the top is : " + myStack.Peek());
// Displaying the count of elements
// contained in the Stack
Console.Write("Total number of elements in the Stack are : ");
Console.WriteLine(myStack.Count);
}
}
输出:
Total number of elements in the Stack are : 6 Element at the top is : 6th Element Element at the top is : 6th Element Total number of elements in the Stack are : 6
Properties
属性 | 说明 |
---|---|
Stack.Count | 获取 Stack 中包含的元素数量。 |
Stack.IsSynchronized | 获取一个值,该值指示对 Stack 的访问是否同步(线程安全)。 |
SyncRoot | 获取可用于同步对 Stack 的访问的对象。 |
例子:
// C# code to Get the number of
// elements contained in the Stack
using System;
using System.Collections;
class GFG {
// Driver code
public static void Main()
{
// Creating a Stack
Stack myStack = new Stack();
// Inserting the elements into the Stack
myStack.Push("Chandigarh");
myStack.Push("Delhi");
myStack.Push("Noida");
myStack.Push("Himachal");
myStack.Push("Punjab");
myStack.Push("Jammu");
// Displaying the count of elements
// contained in the Stack
Console.Write("Total number of elements in the Stack are : ");
Console.WriteLine(myStack.Count);
}
}
输出:
Total number of elements in the Stack are : 6
Methods
方法 | 说明 |
---|---|
Stack.Clear | 从堆栈中删除所有对象。 |
Stack.Clone() | 创建堆栈的浅拷贝。 |
Stack.Contains() | 判断一个元素是否在栈中。 |
Stack.CopyTo() | 从指定的数组索引开始,将 Stack 复制到现有的一维数组。 |
Stack.Equals() | 确定指定对象是否等于当前对象。 |
Stack.GetEnumerator | 返回堆栈的 IEnumerator。 |
GetHashCode() | 用作默认的哈希函数。 |
GetType() | 获取当前实例的类型。 |
MemberwiseClone() | 创建当前对象的浅拷贝。 |
Stack.Peek | 返回堆栈顶部的对象而不删除它。 |
Stack.Pop() | 移除并返回 Stack 顶部的对象。 |
Stack.Push() | 将一个对象插入到 Stack 的顶部。 |
Stack.Synchronized() | 返回堆栈的同步(线程安全)包装器。 |
Stack.ToArray() | 将堆栈复制到新数组。 |
Stack.ToString() | 返回表示当前对象的字符串。 |
例子:
// C# code to Remove all
// objects from the Stack
using System;
using System.Collections;
class GFG {
// Driver code
public static void Main()
{
// Creating a Stack
Stack myStack = new Stack();
// Inserting the elements into the Stack
myStack.Push("1st Element");
myStack.Push("2nd Element");
myStack.Push("3rd Element");
myStack.Push("4th Element");
myStack.Push("5th Element");
myStack.Push("6th Element");
// Displaying the count of elements
// contained in the Stack before
// removing all the elements
Console.Write("Total number of elements in the Stack are : ");
Console.WriteLine(myStack.Count);
// Removing all elements from Stack
myStack.Clear();
// Displaying the count of elements
// contained in the Stack after
// removing all the elements
Console.Write("Total number of elements in the Stack are : ");
Console.WriteLine(myStack.Count);
}
}
输出:
Total number of elements in the Stack are : 6 Total number of elements in the Stack are : 0
例子:
// C# code to Check if a Stack
// contains an element
using System;
using System.Collections;
class GFG {
// Driver code
public static void Main()
{
// Creating a Stack of strings
Stack myStack = new Stack();
// Inserting the elements into the Stack
myStack.Push("Geeks");
myStack.Push("Geeks Classes");
myStack.Push("Noida");
myStack.Push("Data Structures");
myStack.Push("GeeksforGeeks");
// Checking whether the element is
// present in the Stack or not
// The function returns True if the
// element is present in the Stack, else
// returns False
Console.WriteLine(myStack.Contains("GeeksforGeeks"));
}
}
输出:
True
参考:
相关用法
- C# Stack.GetEnumerator()用法及代码示例
- C# Stack.Clear()用法及代码示例
- C# Stack.Peek()用法及代码示例
- C# Stack.Clear用法及代码示例
- C# Stack.Contains()用法及代码示例
- C# Stack.CopyTo()用法及代码示例
- C# Stack.Equals()用法及代码示例
- C# Stack.GetEnumerator用法及代码示例
- C# Stack.Peek用法及代码示例
- C# Stack.Pop()用法及代码示例
- C# Stack.Push()用法及代码示例
- C# Stack.Synchronized()用法及代码示例
- C# Stack.ToArray()用法及代码示例
- C# Stack.ToString()用法及代码示例
- C# Stack.Clone()用法及代码示例
- C# Stack.Count用法及代码示例
- C# Stack.IsSynchronized用法及代码示例
- C# Stack转array用法及代码示例
- C# Static用法及代码示例
- C# String Clone()用法及代码示例
- C# String Compare()用法及代码示例
- C# String CompareOrdinal()用法及代码示例
- C# String CompareTo()用法及代码示例
- C# String Concat()用法及代码示例
- C# String Contains()用法及代码示例
注:本文由纯净天空筛选整理自佚名大神的英文原创作品 C# | Stack Class。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。