当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C# Stack用法及代码示例


堆栈代表一个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 Class。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。