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:
- Tome una variable de bandera y configúrela en verdadero inicialmente, bandera = verdadero . Esta variable indicará si las pilas son iguales o no.
- 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.
- Si el tamaño es el mismo, compare los elementos superiores de ambas pilas dadas.
- 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.
- Repita los pasos 3 y 4 hasta que todos los elementos salgan de ambas pilas.
- 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