Design a Java interface for Stack ADT and develop two different classes that implements this interface, one using array and the other using linked list.
import java.io.*; interface Mystack { public void pop(); public void push(); public void display(); } class Stack_array implements Mystack { final static int n=5; int stack[]=new int[n]; int top=-1; public void push() { try { BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); if(top==(n-1)) { System.out.println(" Stack Overflow"); return; } else { System.out.println("Enter the element"); int ele=Integer.parseInt(br.readLine()); stack[++top]=ele; } } catch(IOException e) { System.out.println("e"); } } public void pop() { if(top<0) { System.out.println("Stack underflow"); return; } else { int popper=stack[top]; top--; System.out.println("Popped element:" +popper); } } public void display() { if(top<0) { System.out.println("Stack is empty"); return; } else { String str=" "; for(int i=0; i<=top; i++) str=str+" "+stack[i]+" <--"; System.out.println("Elements are:"+str); } } } class Link { public int data; public Link nextLink; public Link(int d) { data= d; nextLink=null; } public void printLink() { System.out.print(" --> "+data); } } class Stack_List implements Mystack { private Link first; public Stack_List() { first = null; } public boolean isEmpty() { return first == null; } public void push() { try { BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); System.out.println("Enter the element"); int ele=Integer.parseInt(br.readLine()); Link link = new Link(ele); link.nextLink = first; first = link; } catch(IOException e) { System.err.println(e); } } public Link delete() { Link temp = first; try { first = first.nextLink; } catch(NullPointerException e) { throw e; } return temp; } public void pop() { try { Link deletedLink = delete(); System.out.println("Popped: "+deletedLink.data); } catch(NullPointerException e) { throw e; } } public void display() { if(first==null) System.out.println("Stack is empty"); else { Link currentLink = first; System.out.print("Elements are: "); while(currentLink != null) { currentLink.printLink(); currentLink = currentLink.nextLink; } System.out.println(""); } } } class StackADT { public static void main(String arg[])throws IOException { BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); System.out.println("Implementation of Stack using Array"); Stack_array stk=new Stack_array(); int ch=0; do { System.out.println("1.Push 2.Pop 3.Display 4.Exit 5.Use Linked List"); System.out.println("Enter your choice:"); ch=Integer.parseInt(br.readLine()); switch(ch) { case 1: stk.push(); break; case 2: stk.pop(); break; case 3: stk.display(); break; case 4: System.exit(0); } } while(ch<5); System.out.println("Implementation of Stack using Linked List"); Stack_List stk1=new Stack_List(); ch=0; do { System.out.println("1.Push 2.Pop 3.Display 4.Exit"); System.out.println("Enter your choice:"); ch=Integer.parseInt(br.readLine()); switch(ch) { case 1: stk1.push(); break; case 2: try { stk1.pop(); } catch(NullPointerException e) { System.out.println("Stack underflown"); } break; case 3: stk1.display(); break; default: System.exit(0); } } while(ch<5); } }
OUTPUT:
Implementation of Stack using Array 1.Push 2.Pop 3.Display 4.Exit 5.Use Linked List Enter your choice: 1 Enter the element 10 1.Push 2.Pop 3.Display 4.Exit 5.Use Linked List Enter your choice: 1 Enter the element 15 1.Push 2.Pop 3.Display 4.Exit 5.Use Linked List Enter your choice: 1 Enter the element 25 1.Push 2.Pop 3.Display 4.Exit 5.Use Linked List Enter your choice: 3 Elements are: 10 <-- 15 <-- 25 <-- 1.Push 2.Pop 3.Display 4.Exit 5.Use Linked List Enter your choice: 5 Implementation of Stack using Linked List 1.Push 2.Pop 3.Display 4.Exit Enter your choice: 1 Enter the element 10 1.Push 2.Pop 3.Display 4.Exit Enter your choice: 1 Enter the element 15 1.Push 2.Pop 3.Display 4.Exit Enter your choice: 1 Enter the element 20 1.Push 2.Pop 3.Display 4.Exit Enter your choice: 3 Elements are: --> 20 --> 15 --> 10 1.Push 2.Pop 3.Display 4.Exit Enter your choice: 2 Popped: 20 1.Push 2.Pop 3.Display 4.Exit Enter your choice: 3 Elements are: --> 15 --> 10 1.Push 2.Pop 3.Display 4.Exit Enter your choice: 4