问题
已知L1、L2分别为两循环单链表的头结点指针,m,n分别为L1、L2表中数据节点个数。要求设计一算法,用最快速度将两表合并成一个带头结点的循环单链表。
分析
最快的速度,遍历长度较短的链表,找到尾结点,然后将该链表插入到长度较长的链表中,即可。
代码
LinkList mergeList(LinkList &l1, int m, LinkList &l2, int n){
if(m > n) {///l1的长度大于l2 将l2插入到l1中
LNode *p = l2 -> next;
while(p -> next != l2) {///注意这个条件
p = p -> next;
}
p -> next = l1 -> next;
l1 -> next = l2 -> next;
free(l2);
return l1;
}else {///将l1插入到l2中
LNode *p = l1 -> next;
while(p ->next != l1) {
p = p -> next;
}
p -> next = l2 -> next;
l2 -> next = l1 -> next;
free(l1);
return l2;
}
}
源代码
http://123.206.59.223:8080/code/code/16.rar
转载请注明原文地址: https://ju.6miu.com/read-1201450.html