c 判断两个链表是否相交

来源:互联网 发布:网络教育本科是几本 编辑:程序博客网 时间:2024/05/16 07:57

只需判断两个链表是否有共同结点。

如果两个链表的长度一致,取到头结点,然后只需挨个比较两个链表的结点,

如果两个链表的长度不一致,那么需要将长链表的指针取到(len1 -Len2)的位置后再比较

第一步:取两个链表的长度;

第二步:长链表减去短链表的长度N = (n1-n2);

第三部:长链表将指针指向第N个结点;

void IsLinkIntersect(const linkNode *head1, const linkNode *head2){if (!head1 || !head2){return NULL;}linkNode *p = head1, *q = head2;int n1 =0, n2 =0,num=0;bool intersect = false;while (p){n1++;p=p->next;}while (q){n2++;q=q->next;}if (n1>n2){num = n1-n2while (num >0){p = p->next;}}if (n2>n1){num = n2-n1;while(num >0){q= q->next;}}while (p !=NULL && p!= q ){p=p->next;q=q->next;}if (p != NULL){intersect = true;}}

0 0
原创粉丝点击