Wednesday 29 November 2017

Java Program to Implement Stack using Two Queues


Code:

import java.util.*;

/* Class stackUsingQueue */
class stackUsingQueue
{
    Queue q ;
    Queue tmp ;

    /* Constructor */
    public stackUsingQueue()
    {
        q = new LinkedList();
        tmp = new LinkedList();
    }    
    /*  Function to push an element to the stack */
    public void push(int data)
    {
        /* if no element is present in queue q then
         * enqueue the new element into q  */         
        if (q.size() == 0)
            q.add(data);
        else
        {
            /* if elements are present in q then
             * dequeue all the elements to 
             * temporary queue tmp */             
            int l = q.size();
            for (int i = 0; i < l; i++)
                tmp.add(q.remove());                
            /* enqueue the new element into q */
            q.add(data);        
            /* dequeue all the elements from
             * temporary queue tmp to q */                 
            for (int i = 0; i < l; i++)
                q.add(tmp.remove());
        }
    }    
    /*  Function to remove top element from the stack */
    public int pop()
    {
        if (q.size() == 0)
            throw new NoSuchElementException("Underflow Exception");        
        return q.remove();
    }    
    /*  Function to check the top element of the stack */
    public int peek()
    {
        if (q.size() == 0)
            throw new NoSuchElementException("Underflow Exception");            
        return q.peek();
    }        
    /*  Function to check if stack is empty */
    public boolean isEmpty()
    {
        return q.size() == 0 ;
    }
    /*  Function to get the size of the stack */
    public int getSize()
    {
        return q.size();
    }    
    /*  Function to display the status of the stack */
    public void display()
    {
        System.out.print("\nStack = ");
        int l = getSize();
        if (l == 0)
            System.out.print("Empty\n");
        else
        {
            Iterator it = q.iterator();
            while (it.hasNext())
                System.out.print(it.next()+" ");
            System.out.println();
        }
    }
}
/*  Class StackImplementUsingTwoQueues  */
public class StackImplementUsingTwoQueues
{    
    public static void main(String[] args)
    {
        Scanner scan = new Scanner(System.in);      
        stackUsingQueue suq = new stackUsingQueue();                  
        /* Perform Stack Operations */          
        System.out.println("Stack Using Two Queues Test\n");  
        char ch;     
        do 
        {
            System.out.println("\nStack Operations");
            System.out.println("1. push");
            System.out.println("2. pop");
            System.out.println("3. peek");
            System.out.println("4. check empty");
            System.out.println("5. size");            
            int choice = scan.nextInt();
            switch (choice) 
            {
            case 1 : 
                System.out.println("Enter integer element to push");
                suq.push( scan.nextInt() );                 
                break;                          
            case 2 : 
                try
                {
                    System.out.println("Popped Element = "+ suq.pop() );
                }
                catch (Exception e)
                {
                    System.out.println("Error : " + e.getMessage());
                }        
                break;                         
            case 3 : 
                try
                {
                    System.out.println("Peek Element = "+ suq.peek() );
                }
                catch (Exception e)
                {
                    System.out.println("Error : " + e.getMessage());
                }
                break;                         
            case 4 : 
                System.out.println("Empty status = "+ suq.isEmpty() );
                break;                
            case 5 : 
                System.out.println("Size = "+ suq.getSize() ); 
                break;            
            default :  
                System.out.println("Wrong Entry \n ");
                break;
            }                 
            /* Display Stack */        
            suq.display();            
            System.out.println("\nDo you want to continue (Type y or n) \n");
            ch = scan.next().charAt(0);            
        } while (ch == 'Y'|| ch == 'y');                 
    }
}


Output:

Stack Using Two Queues Test


Stack Operations
1. push
2. pop
3. peek
4. check empty
5. size
4
Empty status = true

Stack = Empty

Do you want to continue (Type y or n)

y

Stack Operations
1. push
2. pop
3. peek
4. check empty
5. size
1
Enter integer element to push
5

Stack = 5

Do you want to continue (Type y or n)

y

Stack Operations
1. push
2. pop
3. peek
4. check empty
5. size
1
Enter integer element to push
99

Stack = 99 5

Do you want to continue (Type y or n)

y

Stack Operations
1. push
2. pop
3. peek
4. check empty
5. size
1
Enter integer element to push
73

Stack = 73 99 5

Do you want to continue (Type y or n)

y

Stack Operations
1. push
2. pop
3. peek
4. check empty
5. size
1
Enter integer element to push
50

Stack = 50 73 99 5

Do you want to continue (Type y or n)

y

Stack Operations
1. push
2. pop
3. peek
4. check empty
5. size
1
Enter integer element to push
1

Stack = 1 50 73 99 5

Do you want to continue (Type y or n)

y

Stack Operations
1. push
2. pop
3. peek
4. check empty
5. size
1
Enter integer element to push
24

Stack = 24 1 50 73 99 5

Do you want to continue (Type y or n)

y

Stack Operations
1. push
2. pop
3. peek
4. check empty
5. size
5
Size = 6

Stack = 24 1 50 73 99 5

Do you want to continue (Type y or n)

y

Stack Operations
1. push
2. pop
3. peek
4. check empty
5. size
3
Peek Element = 24

Stack = 24 1 50 73 99 5

Do you want to continue (Type y or n)

y

Stack Operations
1. push
2. pop
3. peek
4. check empty
5. size
2
Popped Element = 24

Stack = 1 50 73 99 5

Do you want to continue (Type y or n)

y

Stack Operations
1. push
2. pop
3. peek
4. check empty
5. size
2
Popped Element = 1

Stack = 50 73 99 5

Do you want to continue (Type y or n)

y

Stack Operations
1. push
2. pop
3. peek
4. check empty
5. size
2
Popped Element = 50

Stack = 73 99 5

Do you want to continue (Type y or n)

y

Stack Operations
1. push
2. pop
3. peek
4. check empty
5. size
2
Popped Element = 73

Stack = 99 5

Do you want to continue (Type y or n)

y

Stack Operations
1. push
2. pop
3. peek
4. check empty
5. size
1
Enter integer element to push
2

Stack = 2 99 5

Do you want to continue (Type y or n)

y

Stack Operations
1. push
2. pop
3. peek
4. check empty
5. size
2
Popped Element = 2

Stack = 99 5

Do you want to continue (Type y or n)

y

Stack Operations
1. push
2. pop
3. peek
4. check empty
5. size
2
Popped Element = 99

Stack = 5

Do you want to continue (Type y or n)

y

Stack Operations
1. push
2. pop
3. peek
4. check empty
5. size
2
Popped Element = 5

Stack = Empty

Do you want to continue (Type y or n)

y

Stack Operations
1. push
2. pop
3. peek
4. check empty
5. size
3
Error : Underflow Exception

Stack = Empty

Do you want to continue (Type y or n)

y

Stack Operations
1. push
2. pop
3. peek
4. check empty
5. size
4
Empty status = true

Stack = Empty

Do you want to continue (Type y or n)

n



More Java Programs:




















100+ Best Home Decoration Ideas For Christmas Day 2019 To Make Home Beautiful

Best gifts for Christmas Day | Greeting cards for Christmas Day | Gift your children a new gift on Christmas day This Christmas d...