PAT (Basic Level) 1075 链表元素分类

题意

给一个链表,按数据重新分段。

思路

水~

代码

#include <bits/stdc++.h>
using namespace std;
int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);
	string start;
	int n, k;
	cin >> start >> n >> k;
	map<string, pair<int, string>> mp;
	for (int i = 0; i < n; ++i) {
		string add, nxt;
		int data;
		cin >> add >> data >> nxt;
		mp[add] = {data, nxt};
	}
	vector<pair<string, int>> lis;
	string tmp = start;
	while (tmp != "-1") {
		int data = mp[tmp].first;
		if (data < 0) lis.emplace_back(tmp, data);
		tmp = mp[tmp].second;
	}
	tmp = start;
	while (tmp != "-1") {
		int data = mp[tmp].first;
		if (data >= 0 && data <= k) lis.emplace_back(tmp, data);
		tmp = mp[tmp].second;
	}
	tmp = start;
	while (tmp != "-1") {
		int data = mp[tmp].first;
		if (data > k) lis.emplace_back(tmp, data);
		tmp = mp[tmp].second;
	}
	for (int i = 0; i < lis.size() - 1; ++i) 
		cout << lis[i].first << ' ' << lis[i].second << ' ' << lis[i + 1].first << '\n';
	cout << lis[lis.size() - 1].first << ' ' << lis[lis.size() - 1].second << ' ' << -1 << '\n';
	return 0;
} 

HINT

不定时更新更多题解,Basic Level 全部AC代码,详见 link ! ! !

发布了92 篇原创文章 · 获赞 16 · 访问量 3764

猜你喜欢

转载自blog.csdn.net/abcdefbrhdb/article/details/104639443