PAT-链表-A1032 Sharing

Posted fangzhiyou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAT-链表-A1032 Sharing相关的知识,希望对你有一定的参考价值。

题意:给出两条链表的首地址以及若干个节点的的地址、数据、下一个节点的地址,求两条链表的首个共用节点的地址。如果两条链表没有共用节点,则输出-1。

思路:使用静态链表,首先遍历一遍第一个链表并进行标记。然后遍历第二个链表,并检查标记元素,得出结果,进行输出。

代码如下:


```cpp
//所用解法不涉及节点的数据及其地址,
//故不需要在节点中来存储

#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = 1000000;

struct Node
{
//指向下一个地址,标记是否在第一个链表中
int next,flag;
};

Node datas[maxn];

int main()
{
int first1, first2, num;

//读取第一个链表的首地址,第二个链表的首地址,节点数目
scanf("%d %d %d", &first1, &first2, &num);

//获取节点数据
for (int i = 0;i < num;i++)
{
int add_temp, next_temp;
char data_temp;
scanf("%d %c %d", &add_temp, &data_temp, &next_temp);

datas[add_temp].next = next_temp;
}

//遍历第一个链表并进行标记
while (first1 != -1)
{
datas[first1].flag = 1;
first1 = datas[first1].next;
}

//遍历第二个链表,并由标记元素来寻找第一个共同节点
while (first2 != -1 && datas[first2].flag != 1)
{
first2 = datas[first2].next;
}

//输出结果
if (first2 == -1)printf("-1 ");
else printf("%05d ", first2);

return 0;
}
```

以上是关于PAT-链表-A1032 Sharing的主要内容,如果未能解决你的问题,请参考以下文章

PAT (Advanced Level) 1032. Sharing (25)

链表_A1032 Sharing (25 分)

PAT甲级1032 Sharing (25分)

数据结构专题——链表处理 A1032.Sharing (静态链表)

浙大pat甲级题目---1032. Sharing (25)

PAT Basic 1032