PAT A1032 Sharing (25分)

前言

传送门

正文


参考题解

#include<iostream>
#include<algorithm>
using namespace std;
/* 题意:找到两条链表的第一个公共结点的位置 思路:由于地址范围较小,故考虑使用静态链表,找到两条链表的 第一个公共结点即可,可以在结构体中新增一个成员变量flag来表示是否 在第一条链表中出现过,然后在遍历第二条链表时就可以确定这个公共结点。 */
const int N=1e5+10;
struct Node{
	char data;
	int next;
	bool flag;//flag==false表示在第一条链表中未出现 
}node[N];
int main(){
	int a1,a2,n,addr,next;
	char data;
	cin>>a1>>a2>>n; 
	while(n--){
		scanf("%d %c %d",&addr,&data,&next);
		node[addr]={data,next,false};
	} 
	int p;
	for(p=a1;p!=-1;p=node[p].next){
		node[p].flag=true;
	}
	for(p=a2;p!=-1;p=node[p].next){
		if(node[p].flag)break;
	}
	if(p!=-1) printf("%05d\n",p);
	else printf("-1\n");
	return 0;
} 
全部评论

相关推荐

在干饭的比尔很纯真:个人信息不要露出来啊
点赞 评论 收藏
分享
04-14 12:52
已编辑
门头沟学院 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务