题意:给出两条链表的首地址以及若干节点的地址,数据,下一个节点的地址,求两条链表的首个共用节点的地址。如果两条链表没有共用节点,则输出-1。
思路
步骤1:由于地址的范围很小,因此可以直接用静态链表,但是依照题目的要求,在结
点的结构体中再定义一个int型变量flag,表示结点是否在第一条链表中出现,是则为l,不
是为 - 1。
步骤2:由题目给出的第一条链表的首地址出发遍历第一条链表,将经过的所有结点的
flag值赋为1.
接下来枚举第二条链表,当出现第一个fag值为1的结点,说明是第一条链表中出现过
的结果,即为两条链表的第一个共用结点。
如果第二条链表枚举完仍然没有发现共用结点,则输出 - 1。
注意点
①使用 % 05d格式输出地址,可以使不足5位的整数的高位补0
②使用map容易超时。
seanf使用 % c格式时是可以读入空格的,因此在输入地址、数据、后继结点地址的(注释:前面有空格,表示读一字符前要跳过 前面 所有 的空白字符(空格,表格键,回车换行键等,有多少跳多少)后才读入1个实质性的 (字母数字符号)字符)
格式不能写成 % d % c % d,必须在中间加空格。
输入样例
11111 22222 9
67890 i 00002
00010 a 12345
00003 g - 1
12345 D 67890
00002 n 00003
22222 B 23456
11111 L 00001
23456 e 67890
00001 o 00010
输出样例
67890

#include<cstdio>
#include<cstring>
const int maxn = 100010;
struct Node {
char data;
int next;
bool flag;
}node[maxn];
int main() {
int s1, s2, n;
scanf("%d%d%d", &s1, &s2, &n);
int address,next;
char data;
for (int i = 0; i < n; i++) {
scanf("%d %c %d", &address, &data, &next);
node[address].data = data;
node[address].next = next;
}
int x;
for (x = s1; x != -1;x=node[x].next) {
node[x].flag = true;
}
for (x = s2; x != -1; x = node[x].next) {
if (node[x].flag == true) {
break;
}
}
if (x != -1) {
printf("%05d", x);
}
else {
printf("-1");
}
return 0;
}

PAT A1032 Sharing的更多相关文章

  1. PAT甲级——A1032 Sharing

    To store English words, one method is to use linked lists and store a word letter by letter. To save ...

  2. PAT 1032 Sharing[hash][链表][一般上]

    1032 Sharing (25)(25 分) To store English words, one method is to use linked lists and store a word l ...

  3. A1032. Sharing

    To store English words, one method is to use linked lists and store a word letter by letter. To save ...

  4. PAT 1032. Sharing

    其实就是链表求交: #include <iostream> #include <cstdio> #include <cstdlib> #include <un ...

  5. PAT 1003 Sharing (25)

    题目描写叙述 To store English words, one method is to use linked lists and store a word letter by letter. ...

  6. PAT-链表-A1032 Sharing

    题意:给出两条链表的首地址以及若干个节点的的地址.数据.下一个节点的地址,求两条链表的首个共用节点的地址.如果两条链表没有共用节点,则输出-1. 思路:使用静态链表,首先遍历一遍第一个链表并进行标记. ...

  7. PAT 1032 Sharing (25分) 从自信到自闭

    题目 To store English words, one method is to use linked lists and store a word letter by letter. To s ...

  8. PAT甲级题解分类byZlc

    专题一  字符串处理 A1001 Format(20) #include<cstdio> int main () { ]; int a,b,sum; scanf ("%d %d& ...

  9. 【PAT】1032 Sharing (25)(25 分)

    1032 Sharing (25)(25 分) To store English words, one method is to use linked lists and store a word l ...

随机推荐

  1. 200万枚SPC空投来袭,这样的薅羊毛活动你确定不参加吗?

    在过去的2020年,币圈真的是很火爆,很多人在参与数字货币交易或DeFi挖矿中赚到了大钱.但是转眼到了2021年,DeFi进入了下半场,区块链市场也进入了新的阶段,那么区块链的下一个爆点是什么呢?很多 ...

  2. 文件描述符(File Descriptor)简介

    本文转载自文件描述符(File Descriptor)简介 导语 维基百科:文件描述符在形式上是一个非负整数.实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表.当程序打开一个 ...

  3. epoll使用

    epoll通过下面3个epoll系统调用为用户提供服务. (1)epoll_create系统调用 epoll_create在C库中的原型如下: int epoll_create(int size); ...

  4. Redis高频面试题总结

    通过面试多家大型互联网企业,总结了如下的高频面试题目: 1.redis 过期键的删除策略? (1)定时删除:在设置键的过期时间的同时,创建一个定时器 timer). 让定时器在键的过期时间来临时,立即 ...

  5. Mybites逆向工程的搭建

    这个链接写的很全:https://www.cnblogs.com/whgk/p/7140638.html 这段时间太忙,等周末写上自己尝试的步骤.暂时仅作记录.

  6. python进阶(7)垃圾回收机制

    Python垃圾回收 基于C语言源码底层,让你真正了解垃圾回收机制的实现 引用计数器 标记清除 分代回收 缓存机制 Python的C源码(3.8.2版本) 1.引用计数器 1.1环状双向链表 refc ...

  7. 第44天学习打卡(JUC 线程和进程 并发和并行 Lock锁 生产者和消费者问题 如何判断锁(8锁问题) 集合类不安全)

    什么是JUC 1.java.util工具包 包 分类 业务:普通的线程代码 Thread Runnable 没有返回值.效率相比Callable相对较低 2.线程和进程 进程:一个程序.QQ.exe, ...

  8. Python3.x 基础练习题100例(51-60)

    练习51: 题目: 学习使用 按位与(&) . 分析: 0&0=0; 0&1=0; 1&0=0; 1&1=1. 程序: if __name__ == '__ma ...

  9. C++对象的生存期笔记

    下面随笔记录了C++对象的生存期知识 静态生存期 这种生存期与程序的运行期相同. 在文件作用域中声明的对象具有这种生存期. 在函数内部声明静态生存期对象,要冠以关键字static . 动态生存期 块作 ...

  10. 第01章-Java SE8的流库

    从迭代到流的操作 流表面上看起来和集合很类似,都可以让我们转换和获取数据,但是它们之间存在着显著的差异 流并不存储其元素,这些元素可能存储在底层的集合中,或者是按需生成的 流的操作不会修改其数据源 流 ...