I have a reverse method that messes with the original linked list inputted; however usually this is fixable by just reversing.
my problem is after i reverse it, how do i recover the original linked list?
Code://compares p and q; if p is smaller, then return -1; if q is smaller, return 1 //return 0 if its exactly the same int compare(struct integer* p, struct integer* q) { int count=1, count2=1; struct integer *ptest=p, *qtest=q; while(ptest->next!=NULL) { ptest=ptest->next; count++; } printf("count p= %d\n",count); while(qtest->next!=NULL) { qtest=qtest->next; count2++; } //PTEST AND QTEST ARE CURRENTLY POINTING TO LAST DIGIT OF P AND Q printf("count q= %d\n",count2); if(count<count2) { printf("p is less than q; returning -1\n"); return -1; } else if(count>count2) { printf("q is less than p; returning 1\n"); return 1; } else { printf("p=%d and q are equal length; no return yet\n",ptest->digit); if(ptest->digit<qtest->digit) { printf("returning -1\n"); return -1; } else if(ptest->digit>qtest->digit) { printf("returning 1\n"); return 1; } else { } return 0; } } } //---------------PART OF ANOTHER FUNCTION; SEGMENT p=reverse(p); q=reverse(q); printf("\nRevp: "); print(p); printf("-Revq: "); print(q); printf("\n"); while(p!=NULL && q!=NULL) { if(p->digit<q->digit) { printf("first else\n"); p=reverse(p); q=reverse(q); free(ptest); free(qtest); return -1; } else if(p->digit>q->digit) { printf("second else\n"); p=reverse(p); q=reverse(q); free(qtest); free(ptest); return 1; } p=p->next; q=q->next; } return 0;



LinkBack URL
About LinkBacks


