In: Computer Science
Write a ADT called in minStack that provides the following methods:
• push() // inserts an element to the “top” of the minStack
• pop() // removes the last element that was pushed on the stack
• top () // returns the last element that was pushed on the stack
• min() // returns the minimum value of the elements stored so far
class MinStack { static class Node { private int value; private Node next; public Node(int number) { this.value = number; next = null; } public Node(int number, Node next) { this.value = number; this.next = next; } } private Node head; public MinStack() { head = null; } public void push(int num) { head = new Node(num, head); } public int pop() { int result = head.value; head = head.next; return result; } public int top() { return head.value; } public int min() { int minValue = head.value; Node temp =head; while (temp != null) { if (temp.value < minValue) minValue = temp.value; temp = temp.next; } return minValue; } public boolean isEmpty() { return head == null; } } class MinStackTest { public static void main(String[] args) { MinStack stack = new MinStack(); stack.push(4); stack.push(2); stack.push(9); System.out.println("Min: " + stack.min()); stack.push(1); System.out.println("Min: " + stack.min()); System.out.print("Stack: "); while (!stack.isEmpty()) { System.out.print(stack.pop() + " "); } System.out.println(); } }