/* 第 24 题: 链表操作, (1).单链表就地逆置, (2)合并链表 */ node * reverseNonrecurse(node *head) { if(head==NULL) return head; node *p=head,*previous=NULL,*next=NULL; while(p->next!=NULL) { next=p->next;//保存下一个 p->next=previous;//p下一个为他前面的 previous=p; p=next; } p->next=previous; return p; } //两个排好序的合并 Node *merge(Node *h1, Node *h2) { if (h1==NULL) return h2; if (h2==NULL) return h1; Node *head; if (h1->data>h2->data) //谁做头 { head=h2; h2=h2->next; } else { head=h1; h1=h1->next; } Node *current=head; while(h1!=NULL||h2!=NULL) { if(h1==NULL || (h2!=NULL&&h2->data<h1->data))//h1空,或者h2不为空,并且值小于h1 { current->next=h2; h2=h2->next; current=current->next; } else { current->next=h1; h1=h1->next; current=current->next; } } current->next = NULL; return head; }