题目描述


分析:
找出两条链表的首个公共结点,利用flag记录第一条链表的结点,完后遍历第二条链表找到第一个flag为true 的结点即为两条链表的首个公共结点。
#include<cstdio>
#include<cstring>
struct node{
char data;
int next;
bool flag;
}n[100005];
int main(){
for(int i=0;i<100005;i++){
n[i].flag=false;
}
int start1,start2,num;
scanf("%d%d%d",&start1,&start2,&num);
int add,next;
char data;
for(int i=0;i<num;i++){
scanf("%d %c %d",&add,&data,&next);
n[add].data=data;
n[add].next=next;
}
for(int i=start1;i!=-1;i=n[i].next){
n[i].flag=true;
}
int i;
for( i=start2;i!=-1;i=n[i].next){
if(n[i].flag)break;
}
if(i!=-1){
printf("%05d\n",i);
}
else{
printf("-1\n");
}
}
该程序实现了一个寻找两个链表交点的方法。首先,遍历第一个链表并标记所有节点,然后遍历第二个链表以找到第一个带有标记的节点,即为交点。如果未找到交点,则输出-1。
119

被折叠的 条评论
为什么被折叠?



