1074. Reversing Linked List (25)

#include <iostream>
#include <vector>

using namespace std;

struct node
{
	int address, key, next;
}nod[100010];

int main()
{
	int begin, n, k;
	scanf("%d%d%d", &begin, &n, &k);

	node cur;
	int i;

	for(i = 1; i <= n; i++)
	{
		scanf("%d%d%d", &cur.address, &cur.key, &cur.next);
		nod[cur.address] = cur;
	}

	vector<node> v[2];
	while(begin != -1)
	{
		cur = nod[begin];
		v[0].push_back(cur);
		begin = cur.next;
	}

	int size = v[0].size(), group = size / k, j;
	for(i = 0; i < group; i++)
	{
		for(j = (i + 1) * k - 1; j >= i * k; j--)
		{
			v[1].push_back(v[0][j]);
		}
	}

	for(i = group * k; i < size; i++)
	{
		v[1].push_back(v[0][i]);
	}

	for(i = 0; i < size; i++)
	{
		cur = v[1][i];
		printf("%05d %d ", cur.address, cur.key);

		if(i + 1 < size)
		{
			printf("%05d\n", v[1][i + 1].address);
		}
		else
		{
			printf("-1\n");
		}
	}

	system("pause");
	return 0;
}

 

posted on 2025-11-23 17:16  王景迁  阅读(4)  评论(0)    收藏  举报

导航