这个链表归并哪里有有关问题,求解
这个链表归并哪里有问题,求解
------解决方案--------------------
因为你没有修改游标head的next值,所以导致出现了问题。
- C/C++ code
void merge(node* p1, node* p2) { if (p1 == NULL || p2 == NULL) return; node* head = NULL; while (p1 && p2) { if (p1->data <= p2->data) { head = p1; p1 = p1->next; } else { head = p2; p2 = p2->next; } } while (p1 != NULL) { head->next = p1; p1 = p1->next; } while (p2 != NULL) { head->next = p2; p2 = p2->next; } }
------解决方案--------------------
因为你没有修改游标head的next值,所以导致出现了问题。
- C/C++ code
void merge(node* p1, node* p2) { if (p1 == NULL || p2 == NULL) return; node* head = NULL; node* pt = NULL; if (p1->data <= p2->data) { head = p1; p1 = p1->next; } else { head = p2; p2 = p2->next; } pt = head; while (p1 && p2) { if (p1->data <= p2->data) { pt->next = p1; pt = p1; p1 = p1->next; } else { pt->next = p2; pt = p2; p2 = p2->next; } } while (p1 != NULL) { pt->next = p1; pt = p1; p1 = p1->next; } while (p2 != NULL) { pt->next = p2; pt = p2; p2 = p2->next; } }