题目描述
求单向链表中间的节点值,如果奇数个节点取中间,偶数个取偏右边的那个值。
输入描述
第一行 链表头节点地址 后续输入的节点数 n nn
后续输入每行表示一个节点,格式 节点地址 节点值 下一个节点地址(-1表示空指针)
输入保证链表不会出现环,并且可能存在一些节点不属于链表。
输出描述
单向链表中间的节点值
示例1
输入
00010 4
00000 3 -1
00010 5 12309
11451 6 00000
12309 7 11451
输出
6
#include <iostream>
#include <vector>
#include <map>
#include <string>
using namespace std;
typedef struct _NODE
{
string path;
int data;
string next;
}NODE;
int main()
{
string head;
string end("-1");
int n;
map<string, NODE> myList;
vector<int> vec;
NODE node;
cin >> head >> n;
for (int i = 0; i < n; ++i)
{
cin >> node.path >> node.data >> node.next;
myList.insert({ node.path, node });
}
string now = head;
while (now != end)
{
vec.push_back(myList.at(now).data);
now = myList.at(now).next;
}
cout << vec.at(vec.size() / 2) << endl;
return 0;
}