【单链表】06 给定两个单链表,编写算法找出两个链表的公共结点。

🕺作者: 主页

我的专栏
C语言从0到1
探秘C++
数据结构从0到1
探秘Linux
算法题上机准备

😘欢迎 ❤️关注 👍点赞 🙌收藏 ✍️留言

题目

给定两个单链表,编写算法找出两个链表的公共结点。

算法思路

  • 先将链表对齐,这样开始遍历后如果碰到节点相同就是公共节点

题解

c 复制代码
int length(LinkedList L) {
	LNode* p = L;
	if (p == NULL) {
		return 0;
	}
	int ans = 0;
	while (p != NULL) {
		p = p->next;
		ans++;
	}
	return ans;
}
LNode* findCommon(LinkedList L1, LinkedList L2) {
	int len1 = length(L1);
	int len2 = length(L2);
	LNode* longhead = len1 > len2 ? L1 : L2;
	LNode* shorthead = longhead == L1 ? L2 : L1;
	int diff = len1 - len2 > 0 ? len1 - len2 : len2 - len1;
	while (diff > 0) {
		longhead = longhead->next;
		diff--;
	}
	while (longhead) {
		if (longhead == shorthead) {
			return longhead;
		}
		longhead = longhead->next;
		shorthead = shorthead->next;
	}
	return NULL;
}
相关推荐
一只码代码的章鱼7 分钟前
数据结构与算法-搜索-剪枝
算法·深度优先·剪枝
roman_日积跬步-终至千里1 小时前
【后端基础】布隆过滤器原理
算法·哈希算法
若兰幽竹1 小时前
【机器学习】多元线性回归算法和正规方程解求解
算法·机器学习·线性回归
鱼力舟1 小时前
【hot100】240搜索二维矩阵
算法
liuyuzhongcc3 小时前
List 接口中的 sort 和 forEach 方法
java·数据结构·python·list
北_鱼3 小时前
支持向量机(SVM):算法讲解与原理推导
算法·机器学习·支持向量机
计算机小白一个4 小时前
蓝桥杯 Java B 组之背包问题、最长递增子序列(LIS)
java·数据结构·蓝桥杯
MZWeiei4 小时前
PTA:运用顺序表实现多项式相加
算法
卑微的小鬼4 小时前
数据库使用B+树的原因
数据结构·b树
GISer_Jing4 小时前
Javascript排序算法(冒泡排序、快速排序、选择排序、堆排序、插入排序、希尔排序)详解
javascript·算法·排序算法