negative 負(fù)的
positive 正的
思路
這道題考察靜態(tài)鏈表的存儲和遍歷狞尔。每個節(jié)點(diǎn)順序的調(diào)整并非嚴(yán)格的排序,而且要求保證穩(wěn)定偏序,所以自己手動實(shí)現(xiàn)比較合適胖替。
此外,還要考慮一種情況独令,如下所示,即所給的N并不一定是鏈表的長度燃箭。
00100 4 10
100 4 101
101 -1 -1
102 11 103
103 10 -1
代碼
#include <bits/stdc++.h>
using namespace std;
const int maxn = 100002;
struct node{
int data;
int next;
}Node[maxn];
struct newnode{
int addr;
int data;
newnode(int a, int d): addr(a), data(d) {}
};
vector<newnode> ori, aft;
int fir, n, k;
int main() {
cin>>fir>>n>>k;
for (int i = 0; i < n; i++) {
int addr;
cin>>addr;
cin>>Node[addr].data;
cin>>Node[addr].next;
}
int f = fir;
while (f != -1) {
ori.push_back(newnode(f, Node[f].data));
f = Node[f].next;
}
for (int i = 0; i < ori.size(); i++) {
if (ori[i].data < 0) aft.push_back(ori[i]);
}
for (int i = 0; i < ori.size(); i++) {
if (ori[i].data <= k && ori[i].data >= 0) aft.push_back(ori[i]);
}
for (int i = 0; i < ori.size(); i++) {
if (ori[i].data > k) aft.push_back(ori[i]);
}
for (int i = 0; i < ori.size(); i++) {
printf("%05d %d ",aft[i].addr, aft[i].data);
if (i != ori.size() - 1) printf("%05d\n", aft[i+1].addr);
else printf("-1\n");
}
}