A1133 Splitting A Linked List (25 points | linked list, with detailed annotations, logical analysis)
Keywords:
less
Written in front
- Thinking analysis
- Understanding the meaning
- Given a list and K, after traversing the list, the nodes < 0 will be output first, then the nodes in the range of 0-k will be output, and finally the nodes in the range of > k will be output.
- Specific realization:
- 1. All nodes are stored in structure {id, data, next}.
- 2. Traverse the list, find out the nodes in the list and put them in the container v.
- 3. The nodes are divided into three categories (--infinite, 0), [0,k], (k, + -infinite)], which are put into the capacitive ans in sequence by segment and output at last.
- There is a certain degree of difficulty in the subject.
- Understanding the meaning of a question takes time (core question)
- Achieving Thought is Smart
test case
-
input:
00100 9 10
23333 10 27777
00000 0 99999
00100 18 12309
68237 -6 23333
33218 -4 00000
48652 -2 -1
99999 5 68237
27777 11 48652
12309 7 33218
output:
33218 -4 68237
68237 -6 48652
48652 -2 12309
12309 7 00000
00000 0 99999
99999 5 23333
23333 10 00100
00100 18 27777
27777 11 -1
ac code
-
#include <iostream>
#include <vector>
using namespace std;
struct node
{
int id, data, next;
};
int main()
{
int bgin, n, k, s, d, e;
scanf("%d%d%d", &bgin, &n, &k);
node a[100010];
vector<node> v, ans;
for (int i = 0; i < n; i++)
{
scanf("%d%d%d", &s, &d, &e);
a[s] = {s, d, e};
}
for (; bgin != -1; bgin = a[bgin].next)
v.push_back(a[bgin]);
for (int i = 0; i < v.size(); i++)
if (v[i].data < 0) ans.push_back(v[i]);
for (int i = 0; i < v.size(); i++)
if (v[i].data >= 0 && v[i].data <= k) ans.push_back(v[i]);
for (int i = 0; i < v.size(); i++)
if (v[i].data > k) ans.push_back(v[i]);
for (int i = 0; i < ans.size() - 1; i++)
printf("%05d %d %05d\n", ans[i].id, ans[i].data, ans[i + 1].id);
printf("%05d %d -1\n", ans[ans.size() - 1].id, ans[ans.size() - 1].data);
return 0;
}
Summary of Knowledge Points
- Structural body assignment
Posted by dirkie on Tue, 08 Oct 2019 10:50:24 -0700