Check if the two given stacks are same - GeeksforGeeks

03 Jun, 2021
Given two Stacks, the task is to check if the given stacks are same or not.Two stacks are said to be same if they contains the same elements in the same order.Example:  
 
Approach:  
Take a flag variable and set it to true initially, flag = true. This variable will indicate whether the stacks are same or not.First check if the size of given stack1 and stack2 are equal. If the size is not equal, set flag to false and return it.If the size is same, then compare the top elements of both of the given stacks.If the top of both stacks is NOT same, set flag to false and return it otherwise pop top elements of both stacks.Repeat step 3 and 4 until all elements are popped out from both of the stacks.If both stacks gets empty and the flag variable is still true, it means that the stacks are same.
Take a flag variable and set it to true initially, flag = true. This variable will indicate whether the stacks are same or not.
First check if the size of given stack1 and stack2 are equal. If the size is not equal, set flag to false and return it.
If the size is same, then compare the top elements of both of the given stacks.
If the top of both stacks is NOT same, set flag to false and return it otherwise pop top elements of both stacks.
Repeat step 3 and 4 until all elements are popped out from both of the stacks.
If both stacks gets empty and the flag variable is still true, it means that the stacks are same.
Below is the implementation of the above idea:  
C++
Java
Python3
C#
Javascript
// 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 samebool 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 Codeint 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 program to check if the given// stacks are equal or notimport java.util.*; class GFG{ // Function to check if the two given// stacks are samestatic 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 Codepublic 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 program to check if the given# stacks are equal or not # Function to check if the two given# stacks are samedef 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 Codeif __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# program to check if the given// stacks are equal or notusing System;using System.Collections.Generic; class GFG{ // Function to check if the two given// stacks are samestatic 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 Codepublic 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
<script> // JavaScript program to check if the given// stacks are equal or not // Function to check if the two given// stacks are samefunction 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 stackslet stack1 = [];let stack2 = []; // Inserting elements to stack1stack1.push("Geeks");stack1.push("4");stack1.push("Geeks");stack1.push("Welcomes");stack1.push("You"); // Inserting elements to stack2stack2.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>
Stacks are Same
 
ankthon
princiraj1992
29AjayKumar
rag2127
cpp-stack
Articles
Stack
Stack
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Time Complexity and Space Complexity
Docker - COPY Instruction
Time complexities of different data structures
SQL | Date functions
Difference between Min Heap and Max Heap
Stack Data Structure (Introduction and Program)
Stack in Python
Stack Class in Java
Check for Balanced Brackets in an expression (well-formedness) using Stack
Program for Tower of Hanoi