总结:
1.采用静态链表存放数据(data[10000]放数据,next1放下一个节点地址)
2.printf("%d %c %d");//中间有空格
3.读题的时候注意链表的节点如:
00001 00002 4
00001 a 10001
10001 s -1
00002 a 10002
10002 t -1
两个a的节点地址如果一样,那么如果下一个节点地址也一样的话,前面的节点就会被覆盖,这道题并没有出现
代码:
#include <iostream>
#include<string>
#include<algorithm>
using namespace std;
char data[110000];
int next1[110000];
int result[110000];
int main() {
int abegin, bbegin,n;
string a,b;
fill(result, result + 110000, -2);
bool dai=true;
scanf("%d %d %d",&abegin,&bbegin,&n);
for (int i = 0; i < n; i++)
{
int add, nadd; char c;
scanf("%d %c %d",&add,&c,&nadd);
next1[add] = nadd; data[add] = c;
}
int aa = abegin; int bb = bbegin; bool flag = false;
while (aa != -1)
{
result[aa] = 1;
aa = next1[aa];
}
while (bb != -1)
{
if (result[bb] == 1){ printf("%05d", bb); flag = true; break; }
bb = next1[bb];
}
if (flag == false)cout << "-1";
return 0;
}