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