算法思想:归并两个有序链表可以采取头插法,或者尾插法,逆序排列,就选择了尾插法,详见代码
void MargeLinkList(LinkList &q,LinkList &p){
if(q->next==NULL&&p->next==NULL) return;
LinkList s1=q->next;
LinkList s2=p->next;
LinkList temp;
p->next=NULL;//尾指针置空
q->next=NULL;
p=q;
while(s1&&s2){ //当s1和s2都不为空时
if(s1->data<s2->data){
temp=s1->next;
s1->next=q->next;//尾插法建立链表
q->next=s1;
s1=temp;
}else{
temp=s2->next;
s2->next=q->next;//尾插法建立链表
q->next=s2;
s2=temp;
}
// display(q);
}
while(s1){ //当s1不为空 这个与下面的那个只会执行一个
temp=s1->next;
s1->next=q->next;
q->next=s1;
s1=temp;
}
while(s2){
temp=s2->next;
s2->next=q->next;
q->next=s2;
s2=temp;
}
}