タイトル説明
リンクは、
大きな出力データ値への小さな順にリスト、ソートされたリストは、リスト上のそのノードが与えられ
分析
- 、次の標準として、注目を構造物の静的リストを定義し、また、そこにアドレスを記録する必要がある、となぜか?インデックスをソート後のアドレスではないので
- フラグ変数が定義されている間、ノード・リストに指定されたことは、いくつかでは、単純ではないように、横断する必要があることである(以下を参照の書かれた別のコードを横切る)CNTに記憶されているノードの数をカウントしながら、ノードフラグが有効ですトラバースし、次の状況公報判定0-1の便宜
- アドレスリストが分散されるので、これと同じアドレスを使用して記録されたメンバ変数を追加し、データ値ではなく、ソートされたインデックスアドレスに応じて、ノード+ MAXNをソートするために、無効なノードが、そう:のソート実装識別フラグと、CMPフラグを機能させることができる= 1となるよう、フラグ= 0の背面に、一緒に置かれる有効な連続したストレージノード
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e6+10;
struct Node{
int add,data,next;
bool flag;
}node[maxn];
bool cmp(Node a, Node b){
if(a.flag != b.flag) return a.flag > b.flag;
return a.data < b.data;
}
int main(){
int n, st,cnt = 0;
cin>>n>>st;
int add,data,next;
for(int i=0;i<n;i++){
cin>>add>>data>>next;
node[add] = {add, data, next, false}; //新的结构体赋值方法!!学到了
}
for(int i=st; i!=-1; i=node[i].next){ //遍历,新的方式!!学到了
node[i].flag = true;
cnt++;
}
if(cnt==0) printf("0 -1\n"); //全是无效结点
else{
sort(node, node+maxn, cmp);
printf("%d %05d\n",cnt,node[0].add);
for(int i=0;i<cnt-1;i++){
printf("%05d %d %05d\n",node[i].add, node[i].data, node[i+1].add);
}
printf("%05d %d -1\n",node[cnt-1].add, node[cnt-1].data);
}
}