#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
struct Node
{
int addr;
int key;
int next;
};
int main()
{
int head,n,k;
cin>>head>>n>>k;
Node temp;
vector<Node> v;
for(int i=0;i<n;i++)
{
cin>>temp.addr>>temp.key>>temp.next;
v.push_back(temp);
}
int findkey=head;
vector<Node> v1;
while(findkey!=-1)
{
int i=0;
while(i<n){
if(v[i].addr==findkey)
{v1.push_back(v[i]);
findkey=v[i].next;
break;
}
else
i++;
}
}
int m=n/k;
for(int i=0;i<m;i++)
{
reverse(v1.begin()+i*k,v1.begin()+i*k+k);
}
for(int i=0;i<m-1;i++)
{
for(int j=i*k;j<k+i*k;j++)
{
v1[j].next=v1[j+1].addr;
}
}
for(int j=(m-1)*k;j<n-1;j++)
{
v1[j].next=v1[j+1].addr;
}
v1[n-1].next=-1;
for(int i=0;i<n-1;i++)
{
printf("%05d %d %05d\n",v1[i].addr,v1[i].key,v1[i].next);
}
printf("%05d %d %d\n",v1[n-1].addr,v1[n-1].key,v1[n-1].next);
}
1074. Reversing Linked List (25)
最新推荐文章于 2022-03-21 23:03:24 发布