@Override
	public void incCount(E data) {
		if(head == null){
			// We have an empty list - create the first node with data as its value
			head = new ListNode(data);
		}else {
			// We have a non-empty list - let's try to find a matching node
			ListNode current = head;
			// Is the head a match? If so, increment and return
			if(comparator.compare(data, current.value) ==0){
				current.count++;
				return;
			}
			// Look for a node that matches data in the list 
			while(current.next != null && comparator.compare(data, current.next.value) !=0){
				current = current.next;
			}
			// There was no matching node - create a new one
			if(current.next == null){
				ListNode temp = new ListNode(data);
				temp.next = head;
				this.head = temp;
				
			// Found a matching node - move it to the front and increment its count
			}else{
				ListNode temp = current.next;
				current.next = temp.next;
				temp.next = head;
				head = temp;
				head.count++;
			}
		}
	}