package calculator; import java.util.Iterator; public class VList implements Iterable{ Node head; public class Node { int value; char variable; Node next; public Node() { value = -1; variable = ' '; next = null; } public Node( char variable, int value ) { this.value = value; this.variable = variable; next = null; } } public VList(){ head = new Node(); } public int size() { int sz = 0; Node currentNode = head.next; while( currentNode != null ) { currentNode = currentNode.next; sz++; } return sz; } public void addIntNode( int value ) { Node newNode = new Node(' ', value); newNode.next = head.next; head.next = newNode; } public Node removeNode( ) { Node remove = head.next; if( remove != null ) head.next = head.next.next; return remove; } public Node getVariableNode( char variable ) { Node currentNode = head.next; while(currentNode != null && currentNode.variable != variable) currentNode = currentNode.next; return currentNode; } public int getVariableValue( char variable ) throws undefinedVariableException { Node varNode = getVariableNode( variable ); if( varNode != null ) return varNode.value; else throw new undefinedVariableException("Variable " + variable + " not defined."); } public void addVariableNode( char variable, int value ) { Node varNode = getVariableNode( variable ); if( varNode != null ) { varNode.value = value; } else { Node newNode = new Node(variable, value); newNode.next = head.next; head.next = newNode; } } public VlistIterator iterator( ) { return new VlistIterator(); } public class VlistIterator implements Iterator{ Node current; VlistIterator() { current = head.next; } public boolean hasNext() { return (current != null); } public Node next() { Node ret = current; current = current.next; return ret; } public void remove() { // Not implemented } } }