题目:已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序 分析:两个链表都应该是增序或者降序 方法一使用递归的方法 struct Node { Node* next; int value; }; Node* Merge(Node* head1, Node* head2) { Node* res; if(head1 == NULL) return head2; if(head2 == NULL) return head1; if(head1->value < head2->value) { res = head1; res->next = Merge(head1->next, head2); } else { res = head2; res->next = Merge(head1, head2->next); } return res; } 方法二非递归 Node* Merge2(Node* head1, Node* head2) { Node* res,*ret; if(head1 == NULL) return head2; if(head2 == NULL) return head1; Node* p = head1; Node* q = head2; if(p->value < q->value) { res = p; p = p->next; } else { res = q; q = q->next; } ret = res; while(p && q) { if(p->value < q->value) { res->next = p; res = p; p = p->next; } else { res->next = q; res = q; q = q->next; } } while(p) { res->next = p; res = p; p = p->next; } while(q) { res->next = q; res = q; q = q->next; } return ret; }