两个链表的第一个公共结点,三种方法~

本文介绍了三种方法解决链表的第一个公共结点问题:蛮力法、从后往前遍历结合栈辅助、通过计算链表长度差进行优化。详细阐述了每种方法的思路和优缺点。
摘要由CSDN通过智能技术生成

题目描述:输入两个链表,找出它们的第一个公共结点。这里的公共结点不是指数据域哦,而是指整个结点,所以可知,如果有第一个公共结点,则后面所有结点都一样,呈现的像是Y;

思路分析:三种方法

第一种方法:蛮力法:从链表1开始遍历,遇到一个结点,就遍历链表2的所有结点,找到相同的停止,不推荐,因为时间复杂度太大;

第二种方法:因为是Y形状,所以从后面找,一直找到不相同的结点的为止,因为没有前继指针,所以需要依靠栈来存储。

第三种方法:第一种方法的改进,找出两个链表的差值,让长的链表先走差值步,然后两个链表一起走,直到遇到合适的为止。

#include<iostream>
#include<stack>
using namespace std;

struct Node
{
	int data;
	Node *next;
};

Node* Insert_tail(Node *list,int value)//尾插
{
	if(list == NULL)
	{
		return NULL;
	}
	Node *node = new Node;
	n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值