vendredi 27 février 2015

Merging two previously sorted singly linked lists


I am currently trying to write a function to merge two linked lists that have been already sorted. However I am experiencing trouble. So far I have the following:



void list::mergeLists(const list &L1, const list &L2) {
Node* pointer1 = L1.head;
Node* pointer2 = L2.head;
Node* pointer3 = NULL;

if(pointer1 == NULL) {
while(pointer2 ->next! =NULL) {
pointer3 = new Node;
pointer3-> data = pointer2->data;
pointer3->next = head;
head = pointer3;
pointer2= pointer2->next;
}
}

if(pointer2 == NULL) {
while(pointer1 ->next! =NULL) {
pointer3 = new Node;
pointer3-> data = pointer1->data;
pointer3->next = head;
head = pointer3;
pointer1= pointer1->next;
}
}


}


so as you can see the only case I have is that if one of the lists are empty and this does not produce expected results. It produces a result that that reverses the lists and leaves off the last item. Please help me to fix this problem and move forward into merging two lists.




Aucun commentaire:

Enregistrer un commentaire