您的位置:首页 > 其它

1075. 链表元素分类(25)

2018-03-20 18:39 330 查看
跟1025题类似,使用vector来进行排序
#include<cstdio>
#include<vector>
using namespace std;
struct node{
int add,num,next;
int flag=0;
};
int main()
{
int first,n,k;
vector<node> v(100005);
vector<node> vsort,vout;
//freopen("1075.txt","r",stdin);
scanf("%d %d %d",&first,&n,&k);
node s;
for(int i=0;i<n;i++)
{
scanf("%d %d %d",&s.add,&s.num,&s.next);
v[s.add]=s;
}
if(first==-1)
printf("-1\n");
else
{
int next=first;
while(next!=-1)
{
vsort.push_back(v[next]);
next=v[next].next;
}
int New=vsort.size();
//输入负值元素
for(int i=0;i<New;i++)
{
if(vsort[i].num<0&&vsort[i].flag==0)
{
//printf("%d\n",vsort[i].num);
vout.push_back(vsort[i]);
vsort[i].flag=1;
}
}
//输入[0,k]元素
for(int i=0;i<New;i++)
{
if(vsort[i].num<=k&&vsort[i].flag==0)
{
vout.push_back(vsort[i]);
vsort[i].flag=1;
}
}
for(int i=0;i<New;i++)
{
if(vsort[i].flag==0)
{
vout.push_back(vsort[i]);
vsort[i].flag=1;
}
}
for(int i=0;i<New-1;i++)
{
vout[i].next=vout[i+1].add;
printf("%05d %d %05d\n",vout[i].add,vout[i].num,vout[i].next);
}
printf("%05d %d -1\n",vout[New-1].add,vout[New-1].num);
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: