Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

treap

Posted by frkstyc at 2005-06-06 17:12:05
In Reply To:我把源程序贴出来,你们自己比较吧 Posted by:frkstyc at 2005-06-06 17:10:49
#include <fstream>
#include <cstdlib>

using namespace std;

typedef struct NODE
{
	int key, pri;
	NODE *left, *right;
	NODE(int k) : key(k), pri(rand() * rand()), left(NULL), right(NULL)
	{
		;
	}
	~NODE(void)
	{
		delete left;
		delete right;
	}
} *PNODE;

PNODE root = NULL;

void rotate_left(PNODE &t)
{
	PNODE q = t->right;
	t->right = q->left;
	q->left = t;
	t = q;
}

void rotate_right(PNODE &t)
{
	PNODE q = t->left;
	t->left = q->right;
	q->right = t;
	t = q;
}

void insert(PNODE &p, int key)
{
	if(p == NULL)
	{
		p = new NODE(key);
		return;
	}
	if(key < p->key)
	{
		insert(p->left, key);
		if(p->left->pri < p->pri)
		{
			rotate_right(p);
		}
	}
	else
	{
		insert(p->right, key);
		if(p->right->pri < p->pri)
		{
			rotate_left(p);
		}
	}
}

ofstream fout("output.txt");

void traverse(PNODE p)
{
	if(p->left != NULL)
	{
		traverse(p->left);
	}
	fout << p->key << "\n";
	if(p->right != NULL)
	{
		traverse(p->right);
	}
}

int main(void)
{
	ifstream fin("data.txt");
	int key;
	while(fin >> key)
	{
		insert(root, key);
	}
	traverse(root);
	delete root;
	fout.close();
	return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator