设计将两个有序单链表合并成一个单链表并保持有序的算法。
解析:两个链表中的节点两两比较,数值小的放到新的链表里,直至有一个链表为空。
//带头结点
typedef struct Node{
int data;
struct Node *next;
}Node,Sqlist;
//Head3是合并后的结果
void merge(Sqlist *Head1, Sqlist *Head2, Sqlist *Head3){
Node *p, *q,*m;
p = Head1->next, q = Head2->next, m = Head3;
while(p && q){
if(p->data <= q->data){
m->next = p;
m = p;
p = p->next;
}else{
m->next = q;
m = q;
q = q->next;
}
}
if(p)
m->next = p;
if(q)
m->next = q;
}