首页 > 代码库 > 判断两个链表是否相交;查找两个链表的第一个公共节点
判断两个链表是否相交;查找两个链表的第一个公共节点
问题一:(引用编程之美)如果两个链表相交,则尾节点一定是公共的
问题二:
1 int listLength(node* list){ 2 int length=0; 3 while(list!=NULL){ 4 length++; 5 list=list->next; 6 } 7 return length; 8 } 9 //10 node* firstComNode(node* list1,node* list2){11 int n1=listLength(list1);12 int n2=listLength(list2);13 //定义指针pLong,pShort,分别指向长列表和短列表14 node* pLong=list1;15 node* pShort=list2;16 if(n1<n2){17 pLong=list2;18 pShort=list1;19 }20 //将指向长列表的指针前移一定距离d21 int d=((n1-n2)>0)?(n1-n2):(n2-n1);22 while(d--){23 pLong=pLong->next; 24 }25 //两个指针同时向尾部遍历,查找第一个相同的节点26 while(pLong!=NULL && pLong!=pShort){27 pLong=pLong->next;28 pShort=pShort->next;29 }30 return pLong;31 }
判断两个链表是否相交;查找两个链表的第一个公共节点
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。