华为 OD 机试【4 大宝典】再次上新题!
① Python 解华为机试题 :https://dream.blog.csdn.net/article/details/129221789
② C++ 解华为机试题:https://dream.blog.csdn.net/article/details/129472919
③ Java 解华为机试题:https://dream.blog.csdn.net/article/details/129652513
④ C 解华为机试题:https://dream.blog.csdn.net/article/details/129658432
本篇题解:寻找链表的中间结点
题目
给定一个单链表 L,请编写程序输出 L 中间结点保存的数据。如果有两个中间结点,则输出第二个中间结点保存的数据。 例如:给定 L 为 1→7→5
,则输出应该为 7
;给定 L 为 1→2→3→4
,则输出应该为 3
。
输入
每个输入包含 11 个测试用例。 每个测试用例第 11 行给出链表首结点的地址、结点总个数正整数 N(N≤105)。结点的地址是 55 位非负整数,NULL
地址用 −1
表示。
接下来有 N 行,每行格式为:
Address Data Next
其中 Address
是结点地址,Data
是该结点保存的整数数据(0≤Data≤108),Next
是下一结点的地址。
输出
对每个测试用例,在一行中输出L 中间结点保存的数据。如果有两个中间结点,则输出第二个中间结点保存的数据。
备注
已确保输入的结点所构成的链表 L 不会成环,但会存在部分输入结点不属于链表 L 情况 。