PAT:1032. Sharing (25) AC

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct node
{
  char data;
  int next;
  bool tag;
}Node[100066];

int main()
{
  int add1,add2,n;          //连表1首地址,
  scanf("%d%d%d",&add1,&add2,&n);
  memset(Node,0,sizeof(Node));
  char tmp;
  int from,to;
  
  for(int i=0 ; i<n ; ++i)        //先把所有结点存入
  {
    scanf("%d %c %d",&from,&tmp,&to);
    Node[from].data=tmp;
    Node[from].next=to;
  }
  int p;
  for(p=add1 ; p!=-1 ; p=Node[p].next)  //【思维】从表1首地址出发,到-1,经过的就是表1所有节点
  {
    Node[p].tag=1;
  }
  for(p=add2 ; p!=-1 ; p=Node[p].next)  //表1到-1走完了,从表2首地址开始,沿着next一直到头
  {
    if(Node[p].tag==1)          //中途有碰到和表一一样的节点,就停止,p记录的就是这个相同结点地址
      break;
  }
  if(p!=-1)          //有地址,按5位格式输出
    printf("%05d",p);
  else            //没有地址,输出-1
    printf("-1");
  //system("pause");
  return 0;
}
原文地址:https://www.cnblogs.com/Evence/p/4314773.html