#include<stdio.h>
#include<algorithm>
using namespace std;
#define MAX_N 100005
//const int MAX_N=100005
struct Node{
int next;
int data;
int address;
bool flag;
}node[MAX_N];
int n,head;
bool cmp(struct Node a,struct Node b){
if(a.flag!=b.flag) return a.flag>b.flag;
else return a.data<b.data;
//if(a.data!=b.data) return a.data<b.data;
//不处理相等的情况会出现段错误
}
int main(){
int address;
scanf("%d%d",&n,&head);
for(int i=0;i<n;i++){
scanf("%d",&address);
scanf("%d%d",&node[address].data,&node[address].next);
node[address].address=address;
}
int count=0;
for(int p=head;p!=-1;p=node[p].next){
node[p].flag=true;
count++;
}
if(count==0)
printf("0 -1");
else{
sort(node,node+MAX_N,cmp);
printf("%d %05d\n",count,node[0].address);
for(int i=0;i<count;i++){
if(i!=count-1)
printf("%05d %d %05d\n",node[i].address,node[i].data,node[i+1].address);
else
printf("%05d %d -1\n",node[i].address,node[i].data);
}
}
}
1052. Linked List Sorting (25) PAT甲级
最新推荐文章于 2024-09-23 18:35:18 发布
本文介绍了一个使用C语言实现的链表结构,并通过输入节点地址的方式构建链表。文章详细展示了如何对链表中的节点进行排序,并在排序后输出整个链表的内容。涉及的主要步骤包括读取节点信息、构建链表、排序链表以及输出排序后的链表。
546

被折叠的 条评论
为什么被折叠?



