View Single Post
  #5   Spotlight this post!  
Unread 25-07-2010, 19:05
Chris27's Avatar
Chris27 Chris27 is offline
Registered User
AKA: Chris Freeman
FRC #1625 (Winnovation)
Team Role: Alumni
 
Join Date: Mar 2005
Rookie Year: 2004
Location: Mountain View
Posts: 196
Chris27 has a brilliant futureChris27 has a brilliant futureChris27 has a brilliant futureChris27 has a brilliant futureChris27 has a brilliant futureChris27 has a brilliant futureChris27 has a brilliant futureChris27 has a brilliant futureChris27 has a brilliant futureChris27 has a brilliant futureChris27 has a brilliant future
Re: comparing integer lists

My solution isn't really recursive as a modern compiler will turn the tail recursion into iterative code.

It could be rewritten as

Code:
void mydiff(int * arr1, int * end1,  int * arr2, int * end2, int * diff1, int * diff2) {
	
	for(;;) {
		if(arr1 == end1) {
			getTail(arr2, end2, diff2);
			break;
		}

		if(arr2 == end2) {
			getTail(arr1, end1, diff1);
			break;
		}

		while(*arr1 < *arr2 && arr1 != end1) {
			*diff1 = *arr1;
			diff1++;
			arr1++;
		}

		while(*arr2 < *arr1 && arr2 != end2) {
			*diff2 = *arr2;
			diff2++;
			arr2++;
		}

		if(*arr1 == *arr2) {
			if(arr1 != end1)
				arr1++;
			if(arr2 != end2)
				arr2++;
		}
	}
}