PAT A1032 Sharing (25)--链表1

总结:

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;
}

猜你喜欢

转载自blog.csdn.net/luoshiyong123/article/details/81431903
今日推荐