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;
    }

  • 相关阅读:
    移动web开发之flex布局(弹性布局)
    移动web开发之流式布局
    移动端基础
    3D变形(CSS3) transform
    动画(CSS3) animation
    2D变形(CSS3) transform
    过渡(CSS3)
    CSS精灵技术(sprite)
    字体图标
    伸缩布局(CSS3)
  • 原文地址:https://www.cnblogs.com/aLittleBitCool/p/2028709.html
Copyright © 2011-2022 走看看