归并链表的子函数为什么没起作用
程序代码:
#include<iostream> #include<stdlib.h> #define len sizeof(list) using namespace std; struct list { int num; struct list *next; }; list *creat(int n); list *merger(list *head1, list *head2); void delnode(list *head); int main() { list *LA, *LB,*LC; LA = creat(1); LB = creat(2); LC = merger(LA, LB); while (LC != NULL) { cout << LC->num<<"\t"; LC = LC->next; } delnode(LC); return 0; } list *creat(int n) { list *p1, *p2,*head; int i{1}; while (i <= 5) { p1 = (list *)malloc(len); if (i == 1) { head = p1; p1->num = n; } else { p2->next = p1; p1->num = p2->num + 2; } p2 = p1; i++; } p2->next = NULL; return head; } list *merger(list *p1, list *p2) { list *head, *p; while (p1 != NULL || p2 != NULL) { int i{ 1 }; if (p1->num > p2->num) { if (i == 1) { p = head = p2; p2 = p2->next; } else { p->next = p2; p = p2; p2 = p2->next; } } else { if (i == 1) { p = head = p1; p1 = p1->next; } else { p->next = p1; p = p1; p1 = p1->next; } } if (p1 = NULL) { p->next= p2; } if (p2 = NULL) { p->next= p1; } i++; } return head; } void delnode(list *head) { if (head = NULL) return; list *t, *p; p = head; if (p != NULL) { t = p; p = p->next; free(t); } head = NULL; }
请问merger函数为什么没有把LA和LB归并起来?