题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805460652113920

思路:思路参考了算法笔记,因为第一次写链表题,主要就是链表的初始化和遍历,结点数组开得足够大的话,初始化的时候就不需要考虑链接的问题,直接输入单个节点的数据就行

代码

  1. #include<cstring>
  2. #include<cstdio>
  3. const int maxn = 100010;
  4. struct Node{
  5. char data;
  6. int next;
  7. bool flag;
  8. }node[maxn];
  9. int main(){
  10. for(int i = 0; i < maxn; i++){
  11. node[i].flag = false;
  12. }
  13. int s1, s2, n;
  14. int address, next;
  15. char data;
  16. scanf("%d%d%d", &s1, &s2, &n);
  17. for(int i = 0; i < n; i++){
  18. scanf("%d %c %d", &address, &data, &next);
  19. node[address].data = data;
  20. node[address].next = next;
  21. }
  22. int p;
  23. for(p = s1; p != -1; p = node[p].next){
  24. node[p].flag = true;
  25. }
  26. for(p = s2; p != -1; p = node[p].next){
  27. if(node[p].flag == true) break;
  28. }
  29. if(p != -1){
  30. printf("%05d",p);
  31. } else {
  32. printf("-1");
  33. }
  34. return 0 ;
  35. }