zoukankan      html  css  js  c++  java
  • 找出两个链表的第一个公共结点

    题目:两个单向链表,找出它们的第一个公共结点

    如果两个链表有公共节点,则它们的形状必然是一个Y字形。先假设这两个链表的长度相等,则我们可以同步遍历这两个链表,找到公共节点。现在有两个链表,我们可以先分别求齐长度得其差n,然后遍历长的那个链表n个节点,然后同步遍历这两个链表即可。

    代码如下:

    int length(node *list){ //求长度
    int len=0;
    while(list){
    len++;
    list=list->next;
    }
    return len;
    }
    node *find_node(node *&listA,node *&listB){
    int lenA=length(listA),lenB=length(listB);
    node *lA=listA,*lB=listB;
    if(lenA>lenB){
    for(int i=1;i<=lenA-lenB;i++)
    lA=lA->next;
    }else{
    for(int i=1;i<=lenB-lenA;i++)
    lB=lB->next;
    }
    while(lA&&lB){
    if(lA==lB){
    return lA;
    }else{
    lA=lA->next;
    lB=lB->next;
    }
    }
    return NULL;
    }

  • 相关阅读:
    java集合的简单用法
    数据结构
    数据结构
    数据结构
    数据结构
    软件工程第三次作业
    软件工程第三次作业
    软件工程第三次作业
    软件工程第三次作业
    Linux 开发之线程条件锁那些事
  • 原文地址:https://www.cnblogs.com/aLittleBitCool/p/2028709.html
Copyright © 2011-2022 走看看