https://www.bilibili.com/video/av39115738
强烈安利灯笼大神的视频...上面是视频链接…下面截图是灯笼大神视频里的…
今天学了下 怎么找交叉链表会和到一起的那个结点,做个学习笔记…
#—
因为不确定list1 和 list2两条链表在汇聚到某个结点之前 ,他们各自的结点数是相同的,所以要求出这个结点数的差值。长的链表的结点数 - 短的链表的结点数 == 指向长的链表的指针需要移动的结点数
如上图p1指针指向 “1”结点,p2指针指向“7”结点,通过一个求链表中结点个数的函数得到 list1的长度为6,list2结点的个数为4。6-4=2 ,这时候将p1指针向后移动2个结点。
这时候p1和p2 同步进行移动即可到达汇集的那个结点…
#include<stdio.h>
#include<stdlib.h>
//创建一个链表结点的结构体 没有什么问题
typedef struct {
int value;
struct Node *next;
} Node;
//这个函数是用来返回链表长度的 没有什么问题
int get_list_length(Node *list)
{
Node *p = list;
int length = 0;
while( p != NULL )
{
++length;
p = (struct Node *)(p->next);
}
return length