* @param var2		The second list
	 * @return result	The difference of var1 and var2
	 */
	static LinkedList<Integer> subtract(LinkedList<Integer>var1, LinkedList<Integer>var2){

		LinkedList<Integer> result = new LinkedList<Integer>();

		// If var1 has fewer digits than var2, var1 must be smaller than var2, so return 0
		if(var1.size() < var2.size()){
			result.add(0);
			return result;
		}

		Iterator<Integer> itr1 = var1.iterator();
		Iterator<Integer> itr2 = var2.iterator();

		int carrier = 0; // The carrier for a given digit in subtract operation

		// while var1 has the same number of digits as var2, subtract var2 from var1 digit by digit, from LSD to MSD
		while((itr1.hasNext())&&(itr2.hasNext())){
			int x = itr1.next().intValue(); // The integer value of a digit in var1
			int y = itr2.next().intValue(); // The integer value of a digit in var2
			int diff = x - y + carrier; // The difference of the digit of var1 and var2, plus carrier
			if(diff < 0) { // If the difference is less than zero, borrow "1" from the next digit
				diff = diff + BASE; 
				carrier = -1;
			} else { // Otherwise, set the carrier for the next digit as 0
				carrier = 0;
			}
			result.add(diff);
		}

		// If var1 has more digits than var2, subtract var2 from var1 digit by digit, from LSD to MSD
		while(itr1.hasNext()){
			int x = itr1.next().intValue();
			int diff = x + carrier;
			if(diff < 0){ // If the difference is less than zero, borrow "1" from the next digit
				diff = diff + BASE;
				carrier = -1;
			} else{ // Otherwise, set the carrier for the next digit as 0
				carrier = 0;
			}
			result.add(diff);
		}
		
		// If var1 is smaller than var2, return 0
		if(carrier < 0) {
			result.clear();
			result.add(0);
		}
		
		// Remove the leading zeros from the result
		while((result.getLast() == 0)&&(result.size() > 1)){
			result.removeLast();
		}

		return result;
	}