Compruebe si las dos pilas dadas son iguales

Dadas dos pilas, la tarea es verificar si las pilas dadas son iguales o no.
Se dice que dos pilas son iguales si contienen los mismos elementos en el mismo orden.
Ejemplo
 

Acercarse: 
 

  1. Tome una variable de bandera y configúrela en verdadero inicialmente, bandera = verdadero . Esta variable indicará si las pilas son iguales o no.
  2. Primero verifique si el tamaño de stack1 y stack2 dados son iguales. Si el tamaño no es igual, establezca el indicador en falso y devuélvalo.
  3. Si el tamaño es el mismo, compare los elementos superiores de ambas pilas dadas.
  4. Si la parte superior de ambas pilas NO es la misma, establezca el indicador en falso y devuélvalo; de lo contrario, extraiga los elementos superiores de ambas pilas.
  5. Repita los pasos 3 y 4 hasta que todos los elementos salgan de ambas pilas.
  6. Si ambas pilas se vacían y la variable indicadora sigue siendo verdadera, significa que las pilas son las mismas.

A continuación se muestra la implementación de la idea anterior: 
 

C++

// C++ program to check if the given
// stacks are equal or not
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to check if the two given
// stacks are same
bool isSameStack(stack<string> stack1, stack<string> stack2)
{
    // Create a flag variable
    bool flag = true;
 
    // Check if size of both stacks are same
    if (stack1.size() != stack2.size()) {
        flag = false;
        return flag;
    }
 
    // Until the stacks are not empty
    // compare top of both stacks
    while (stack1.empty() == false) {
        // If the top elements of both stacks
        // are same
        if (stack1.top() == stack2.top()) {
            // Pop top of both stacks
            stack1.pop();
            stack2.pop();
        }
        else {
            // Otherwise, set flag to false
            flag = false;
            break;
        }
    }
 
    // Return flag
    return flag;
}
 
// Driver Code
int main()
{
    // Creating stacks
    stack<string> stack1;
    stack<string> stack2;
 
    // Inserting elements to stack1
    stack1.push("Geeks");
    stack1.push("4");
    stack1.push("Geeks");
    stack1.push("Welcomes");
    stack1.push("You");
 
    // Inserting elements to stack2
    stack2.push("Geeks");
    stack2.push("4");
    stack2.push("Geeks");
    stack2.push("Welcomes");
    stack2.push("You");
 
    if (isSameStack(stack1, stack2))
        cout << "Stacks are Same";
    else
        cout << "Stacks are not Same";
 
    return 0;
}

Java

// Java program to check if the given
// stacks are equal or not
import java.util.*;
 
class GFG
{
 
// Function to check if the two given
// stacks are same
static boolean isSameStack(Stack<String> stack1,
                            Stack<String> stack2)
{
    // Create a flag variable
    boolean flag = true;
 
    // Check if size of both stacks are same
    if (stack1.size() != stack2.size())
    {
        flag = false;
        return flag;
    }
 
    // Until the stacks are not empty
    // compare top of both stacks
    while (stack1.empty() == false)
    {
        // If the top elements of both stacks
        // are same
        if (stack1.peek() == stack2.peek())
        {
            // Pop top of both stacks
            stack1.pop();
            stack2.pop();
        }
        else
        {
            // Otherwise, set flag to false
            flag = false;
            break;
        }
    }
 
    // Return flag
    return flag;
}
 
// Driver Code
public static void main(String arr[])
{
    // Creating stacks
    Stack<String> stack1 = new Stack<String>();
    Stack<String> stack2 = new Stack<String>();
 
    // Inserting elements to stack1
    stack1.push("Geeks");
    stack1.push("4");
    stack1.push("Geeks");
    stack1.push("Welcomes");
    stack1.push("You");
 
    // Inserting elements to stack2
    stack2.push("Geeks");
    stack2.push("4");
    stack2.push("Geeks");
    stack2.push("Welcomes");
    stack2.push("You");
 
    if (isSameStack(stack1, stack2))
        System.out.println("Stacks are Same");
    else
        System.out.println("Stacks are not Same");
 
}
}
 
/* This code contributed by PrinciRaj1992 */

Python3

# Python3 program to check if the given
# stacks are equal or not
 
# Function to check if the two given
# stacks are same
def isSameStack(stack1, stack2) :
 
    # Create a flag variable
    flag = True;
 
    # Check if size of both stacks are same
    if (len(stack1) != len(stack2)) :
        flag = False;
        return flag;
 
    # Until the stacks are not empty
    # compare top of both stacks
    while (len(stack1)) :
         
        # If the top elements of both stacks
        # are same
        if (stack1[0] == stack2[0]) :
            # Pop top of both stacks
            stack1.pop();
            stack2.pop();
 
        else :
             
            # Otherwise, set flag to false
            flag = False;
            break;
 
    # Return flag
    return flag;
 
 
# Driver Code
if __name__ == "__main__" :
 
    # Creating stacks
    stack1 = [];
    stack2 = [];
 
    # Inserting elements to stack1
    stack1.append("Geeks");
    stack1.append("4");
    stack1.append("Geeks");
    stack1.append("Welcomes");
    stack1.append("You");
 
    # Inserting elements to stack2
    stack2.append("Geeks");
    stack2.append("4");
    stack2.append("Geeks");
    stack2.append("Welcomes");
    stack2.append("You");
 
    if (isSameStack(stack1, stack2)) :
        print("Stacks are Same");
    else :
        print("Stacks are not Same");
 
# This code is contributed by AnkitRai01

C#

// C# program to check if the given
// stacks are equal or not
using System;
using System.Collections.Generic;
 
class GFG
{
 
// Function to check if the two given
// stacks are same
static Boolean isSameStack(Stack<String> stack1,
                            Stack<String> stack2)
{
    // Create a flag variable
    Boolean flag = true;
 
    // Check if size of both stacks are same
    if (stack1.Count != stack2.Count)
    {
        flag = false;
        return flag;
    }
 
    // Until the stacks are not empty
    // compare top of both stacks
    while (stack1.Count!=0)
    {
        // If the top elements of both stacks
        // are same
        if (stack1.Peek() == stack2.Peek())
        {
            // Pop top of both stacks
            stack1.Pop();
            stack2.Pop();
        }
        else
        {
            // Otherwise, set flag to false
            flag = false;
            break;
        }
    }
 
    // Return flag
    return flag;
}
 
// Driver Code
public static void Main(String []arr)
{
    // Creating stacks
    Stack<String> stack1 = new Stack<String>();
    Stack<String> stack2 = new Stack<String>();
 
    // Inserting elements to stack1
    stack1.Push("Geeks");
    stack1.Push("4");
    stack1.Push("Geeks");
    stack1.Push("Welcomes");
    stack1.Push("You");
 
    // Inserting elements to stack2
    stack2.Push("Geeks");
    stack2.Push("4");
    stack2.Push("Geeks");
    stack2.Push("Welcomes");
    stack2.Push("You");
 
    if (isSameStack(stack1, stack2))
        Console.WriteLine("Stacks are Same");
    else
        Console.WriteLine("Stacks are not Same");
 
}
}
 
// This code has been contributed by 29AjayKumar

Javascript

<script>
 
// JavaScript program to check if the given
// stacks are equal or not
 
// Function to check if the two given
// stacks are same
function isSameStack(stack1,stack2)
{
    // Create a flag variable
    let flag = true;
   
    // Check if size of both stacks are same
    if (stack1.length != stack2.length)
    {
        flag = false;
        return flag;
    }
   
    // Until the stacks are not empty
    // compare top of both stacks
    while (stack1.length == false)
    {
        // If the top elements of both stacks
        // are same
        if (stack1[stack1.length-1] == stack2[stack2.length-1])
        {
            // Pop top of both stacks
            stack1.pop();
            stack2.pop();
        }
        else
        {
            // Otherwise, set flag to false
            flag = false;
            break;
        }
    }
   
    // Return flag
    return flag;
}
 
// Driver Code
 
// Creating stacks
let stack1 = [];
let stack2 = [];
 
// Inserting elements to stack1
stack1.push("Geeks");
stack1.push("4");
stack1.push("Geeks");
stack1.push("Welcomes");
stack1.push("You");
 
// Inserting elements to stack2
stack2.push("Geeks");
stack2.push("4");
stack2.push("Geeks");
stack2.push("Welcomes");
stack2.push("You");
 
if (isSameStack(stack1, stack2))
    document.write("Stacks are Same");
else
    document.write("Stacks are not Same");
 
 
// This code is contributed by rag2127
 
</script>
Producción: 

Stacks are Same

 

Complejidad de tiempo: O (N), ya que estamos usando un ciclo que atravesará N veces en el peor de los casos. Donde N es el número de elementos en las pilas.

Espacio auxiliar: O(1), ya que no estamos utilizando ningún espacio adicional.

Publicación traducida automáticamente

Artículo escrito por 29AjayKumar 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 *