/** * A stack that uses a linked list to keep track of the different symbols */ public class LinkedStack { //Fields private CharNode top = null; //Instance methods /** * Method to determine whether the stack is empty or not * @return Returns the result as a boolean */ public boolean empty() { return top == null; } /** * Method to remove the top of the stack */ public void pop() { if(empty()) { throw new IllegalStateException("The stack is empty"); } else { top = top.next; } } /** * Method to add to the stack * @param symbol Symbol to be added to the stack */ public void push(char symbol) { top = new CharNode(symbol, top); } /** * Method to return the top of the stack * @return Returns the result as a char */ public char peek() { if(empty()) { throw new IllegalStateException("The stack is empty"); } else { return top.symbol; } } }