// The linked list based implementation for the NumberStack ADT // Your name here public class LinkedNumberStack implements NumberStack { // instance variable private LNode m_top; // check whether the stack is empty public boolean isEmpty() { if (m_top == null) return true; else return false; } // check whether the stack is full public boolean isFull() { return false; } // return the element at the top of the stack public int top() { if (isEmpty()) throw new RuntimeException("top attempted on an empty stack"); else return m_top.getInfo(); } // push a value onto the stack public void push(int v) { LNode new_node = new LNode(v); if (isEmpty()) { m_top = new_node; } else { new_node.setLink(m_top); m_top = new_node; } } // remove and return the value at the top of the stack public int pop() { if (isEmpty()) throw new RuntimeException("pop attempted on an empty stack"); else { int top_val = m_top.getInfo(); LNode prev_node = m_top.getLink(); m_top = prev_node; return top_val; } } // return the number of elements on the stack public int size() { int current_size = 0; LNode current_node = m_top; while (current_node != null) { current_node = current_node.getLink(); current_size += 1; } return current_size; } // return a string representation of the stack @Override public String toString() { String stackContent = ""; LNode current = m_top; while (current != null) { stackContent += current.getInfo() + " "; current = current.getLink(); } return stackContent; } }