静态链表的练习每次都会运行超时,不知道循环该怎么改。
https://pintia.cn/problem-sets/994805342720868352/problems/994805425780670464
注意:
所有数据均无效。
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;
const int maxn=100010;
int n,s1;
struct Node{
int loc;
int data;
int next;
bool flag;
}node[maxn];
int searchLoc(int loc){
for(int i=0;i<n;i++){
if(node[i].loc==loc){
return i;
break;
}
}
}
bool cmp(Node a,Node b){
if(a.flag==true&&b.flag==false){
return a.flag>b.flag;
}
else{
return a.data<b.data;
}
}
int main(){
int count=0;
scanf("%d%d",&n,&s1);
for(int i=0;i<n;i++){
int tempLoc,tempData,tempNext;
scanf("%d%d%d",&tempLoc,&tempData,&tempNext);
node[i].loc=tempLoc;
node[i].data=tempData;
node[i].next=tempNext;
node[i].flag=false;
}
int begin=searchLoc(s1);
int next=node[begin].loc;
while(next!=-1){
count++;
int loc=searchLoc(next);
node[loc].flag=true;
next=node[loc].next;
}
sort(node,node+n,cmp);
printf("%d %05d\n",count,node[0].loc);
for(int i=0;i<count-1;i++){
printf("%05d %d %05d\n",node[i].loc,node[i].data,node[i+1].loc);
}
printf("%05d %d -1\n",node[count-1].loc,node[count-1].data);
system("pause");
return 0;
}