1097. Deduplication on a Linked List (25)

#include <iostream>
#include <vector>

using namespace std;

struct node
{
	int address, key, next;
}linklist[100000];

int flag[10010];
vector<node> v[3];

void print(int index)
{
	int i, size = v[index].size();
	node nod;

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

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

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

	int i;
	node nod;

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

	while(begin != -1)
	{
		v[0].push_back(linklist[begin]);
		begin = linklist[begin].next;
	}

	int size = v[0].size(), curkey;
	for(i = 0; i < size; i++)
	{
		nod = v[0][i];
		curkey = nod.key;

		if(curkey < 0)
		{
			curkey = -curkey;
		}

		if(flag[curkey] == 0)
		{
			flag[curkey] = 1;
			v[1].push_back(nod);
		}
		else
		{
			v[2].push_back(nod);
		}
	}

	print(1);
	print(2);

	system("pause");
	return 0;
}

 

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

导航