Pila de C# con ejemplos

Una pila representa una colección de objetos de último en entrar, primero en salir. Se utiliza cuando necesita acceso de último en entrar, primero en salir a los elementos. Es un tipo de colección tanto genérico como no genérico. La pila genérica se define en el espacio de nombres System.Collections.Generic , mientras que la pila no genérica se define en el espacio de nombres System.Collections , aquí analizaremos la pila de tipos no genéricos. Se utiliza una pila para crear una colección dinámica que crece, según la necesidad de su programa. En una pila, puede almacenar elementos del mismo tipo o de diferentes tipos. 

El siguiente diagrama ilustra la jerarquía de clases de Stack: 

Puntos importantes:

  • La clase Stack implementa las interfaces IEnumerable , ICollection e ICloneable .
  • Cuando agrega un elemento en la lista, se le llama empujar el elemento.
  • Cuando lo quita, se llama hacer estallar el elemento.
  • La capacidad de una Pila es el número de elementos que la Pila puede contener. A medida que se agregan elementos a una pila, la capacidad aumenta automáticamente según sea necesario mediante la reasignación.
  • En Stack, puede almacenar elementos duplicados.
  • Una pila acepta nulo como un valor válido para los tipos de referencia.

¿Cómo crear una pila?

La clase Stack tiene tres constructores que se utilizan para crear una pila que es la siguiente:

  • Stack(): este constructor se utiliza para crear una instancia de la clase Stack que está vacía y tiene la capacidad inicial predeterminada.
  • Stack(ICollection): este constructor se utiliza para crear una instancia de la clase Stack que contiene elementos copiados de la colección especificada y tiene la misma capacidad inicial que el número de elementos copiados.
  • Stack(Int32): este constructor se usa para crear una instancia de la clase Stack que está vacía y tiene una capacidad inicial especificada o la capacidad inicial predeterminada, la que sea mayor.

Veamos cómo crear una pila usando el constructor Stack():
Paso 1: Incluya el espacio de nombres System.Collections en su programa con la ayuda de la palabra clave using.

using System.Collections;

Paso 2: Cree una pila usando la clase Stack como se muestra a continuación:

Stack stack_name = new Stack();

Paso 3: si desea agregar elementos en su pila, use el método Push() para agregar elementos en su pila. Como se muestra en el siguiente ejemplo.

Ejemplo:

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("geeksforgeeks");
        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);
        }
    }
}
Producción: 

490.98
1234

G
geeksforgeeks
Geeks

 

¿Cómo eliminar elementos de la pila?

En Stack, puede eliminar elementos de la pila. La clase Stack proporciona dos métodos diferentes para eliminar elementos y los métodos son:

  • Borrar : este método se utiliza para eliminar todos los objetos de la pila.
  • Pop : este método elimina el elemento inicial de la pila.

Ejemplo:

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("geeksforgeeks");
        my_stack.Push("geeks23");
        my_stack.Push("GeeksforGeeks");
 
        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);
                                                    
    }
}
Producción: 

Total elements present in my_stack: 4
Total elements present in my_stack: 3
Total elements present in my_stack: 0

 

¿Cómo obtener el elemento superior de la pila?

En Stack, puede encontrar fácilmente el elemento superior de la pila utilizando los siguientes métodos proporcionados por la clase Stack:

  • Pop : este método devuelve el objeto al principio de la pila con modificación, lo que significa que este método elimina el elemento superior de la pila.
  • Peek : este método devuelve el objeto al principio de la pila sin eliminarlo.

Ejemplo:

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("geeksforgeeks");
        my_stack.Push("geeks23");
        my_stack.Push("GeeksforGeeks");
 
        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);
                           
    }
}
Producción: 

Total elements present in my_stack: 4
Topmost element of my_stack is: GeeksforGeeks
Total elements present in my_stack: 3
Topmost element of my_stack is: geeks23
Total elements present in my_stack: 3

 

¿Cómo verificar la disponibilidad de elementos en la pila?

En una pila, puede verificar si el elemento dado está presente o no usando el método Contiene() . O, en otras palabras, si desea buscar un elemento en la pila dada, use el método Contiene(). Este método devuelve verdadero si el elemento está presente en la pila. De lo contrario, devuelve falso.

Nota: El método Contiene() tarda O(n) tiempo en verificar si el elemento existe en la pila. Esto debe tenerse en cuenta al utilizar este método.

Ejemplo:

C#

// C# program to illustrate how
// to check element present in
// the stack or not
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("geeksforgeeks");
        my_stack.Push("geeks23");
        my_stack.Push("GeeksforGeeks");
 
        // Checking if the element is
        // present in the Stack or not
        if (my_stack.Contains("GeeksforGeeks") == true)
        {
            Console.WriteLine("Element is found...!!");
        }
 
        else
        {
            Console.WriteLine("Element is not found...!!");
        }
    }
}
Producción: 

Element is found...!!

 

Pila genérica frente a pila no genérica

Pila genérica

Pila no genérica

La pila genérica se define en el espacio de nombres System.Collections.Generic. La pila no genérica se define en el espacio de nombres System.Collections.
La pila genérica solo puede almacenar el mismo tipo de elementos. La pila no genérica puede almacenar el mismo tipo o diferentes tipos de elementos.
Es necesario definir el tipo de los elementos en la pila. No hay necesidad de definir el tipo de los elementos en la pila.
Es de tipo seguro. No es de tipo seguro.

Publicación traducida automáticamente

Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *