亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? command.cpp

?? 我的紅黑樹(shù)的c++實(shí)現(xiàn)。主要特點(diǎn)是可以用dot工具把紅黑樹(shù)畫(huà)出來(lái)
?? CPP
字號(hào):
// file command.cpp
//created by alpha 2008.11.3

#include "../headers/command.h"
#include "../headers/control.h"
#include "../headers/rbtree.h"
#include "../headers/bstree.h"
#include "../headers/timer.h"
#include "../headers/dot.h"
#include <map>
#include <string>
#include <iostream>
#include <algorithm>

using namespace std;
typedef map<string, int>::value_type cmdValType;
typedef string::size_type strSizeType;

command::command(string s)
{
	strSizeType loc = s.find(" ",0);
	if(loc == string::npos)
		cmd = s;
}
bool command::control()
{
	init();
	int i = -1;
	if(m.count(cmd))
		i = m[cmd];
	else
		cerr<<"bad command!\n";
	switch(i)
	{
		case 0:
			return false;
		case 1:
			setup();		break;
		case 2:
			inserttest();	break;
		case 3:
			deletetest();	break;
		case 4:
			randomtest();	break;
		case 5:
			average();		break;
		case 6:
			keyrank();		break;
		case 7:	
			help();			break;
		case 8:
			clear();		break;
		default:
			break;
	}
	return true;
}

void command::init()                           //enrol  commands
{
	m.insert(cmdValType("quit",0));
	m.insert(cmdValType("setup",1));
	m.insert(cmdValType("test",2));
	m.insert(cmdValType("deletetest",3));
	m.insert(cmdValType("random",4));
	m.insert(cmdValType("average",5));
	m.insert(cmdValType("keyrank",6));
	m.insert(cmdValType("help",7));
	m.insert(cmdValType("clear",8));
}

void command::setup()
{
	system("graphviz.exe");
}

void command::inserttest()
{
	controlInsert = 1;           //open -ins option
	rbtree t;
	cout<<"insert 8,11,17,15,6,1,22,25,27 in turn:\n";
	t.insert(8);
	t.insert(11);
	t.insert(17);
	t.insert(15);
	t.insert(6);
	t.insert(1);
	t.insert(22);
	t.insert(25);
	t.insert(27);
	t.print();
	cout<<"the bh of test rbtree is "<<t.getBh()<<endl;
	cout<<"delete node 15:\n";
	t.delNode(15);
	t.print();
	cout<<"the bh of test rbtree is "<<t.getBh()<<endl;
	controlInsert = 0;         //close -ins option
	return;
}

void command::deletetest()
{
	return;
}

void command::randomtest()
{
	vector<int> rand;
	cout<<"creating random nodes...";
	int size = 300000;
	int i = 0;
	Timer rbtm,bstm;
	while(i < size)
		rand.push_back(++i);
	random_shuffle(rand.begin(), rand.end());
	cout<<"\t\tcreat finished\n";
	rbtree rbt;
	bstree bst;
	//insert and find in bstree
	cout<<"inserting nodes to bstree...";
	for (i = 0; i < size; i++)
		bst.insert(rand[i]);
	cout<<"\t\tinsert finished\n";
	cout<<"finding 15000 in bstree...";
	bstm.Start();
	bool flag = bst.find(15000);
	bstm.End();
	if (flag)
		cout<<"\t\tfound 15000 in bstree!\n";
	//insert and find in rbtree
	cout<<"inserting nodes to rbtree...";
	for(i = 0; i < size; i++)
	{
		rbt.insert(rand[i]);
	}
	cout<<"\t\tinsert finished\n";
	cout<<"finding 15000 in rbtree...";
	rbtm.Start();	
	flag = rbt.find(15000);
	rbtm.End();
	if (flag)
		cout<<"\t\tfound 15000 in rbtree!\n";

	long rbtime = rbtm.costTime;
	long bstime = bstm.costTime;
	cout<<"cost of finding 15000 in RED_BLACK_TREE with 300000 nodes is "<<rbtime<<" us"<<endl;
	cout<<"cost of finding 15000 in BINARY_SEARCH_TREE with 300000 nodes is "<<bstime<<" us"<<endl;

	cout<<endl;
	return;
}

void command::average()
{
	float rbaver = 0;
	float bsaver = 0;
	for(int i = 0; i< 5; i++)
	{
		vector<int> rand;
		cout<<"creating random nodes...";
		int size = 300000;
		int i = 0;
		Timer tm;
		while(i < size)
			rand.push_back(++i);
		random_shuffle(rand.begin(), rand.end());
		cout<<"\t\tcreat finished\n";
		bsaver += rtest_bstree(rand);
		rbaver += rtest_rbtree(rand);
		cout<<endl;
	}
	rbaver /= 5.0;
	bsaver /= 5.0;
	cout<<"\naverage time of finding 15000 in RED_BLACK_TREE with 300000 nodes is "<<rbaver<<" us";
	cout<<"\naverage time of finding 15000 in BINARY_SEARCH_TREE with 300000 nodes is "<<bsaver<<" us\n";
}

void command::keyrank()
{
	rbtree t;
	for(int i = 1; i < 9; i++)
	{
		t.insert(i);
		cout<<"inserting "<<i<<endl;
	}
	cout<<"\nOS_KEY_RANK of 6 is "<<t.keyrank(6)<<endl;
}

float command::rtest_rbtree(vector<int> &rand)
{
	int i;
	int size = rand.size();
	rbtree t;
	cout<<"inserting nodes to rbtree...";
	for(i = 0; i < size; i++)
	{
		t.insert(rand[i]);
	}
	cout<<"\t\tinsert finished\n";
	cout<<"finding 15000 in rbtree...";
	Timer tm;
	tm.Start();	
	bool flag = t.find(15000); 
	tm.End();
	if(flag)
		cout<<"\t\tfound 15000!\n";
	long time = tm.costTime;
	cout<<"cost of finding 15000 in RED_BLACK_TREE with 300000 nodes is "<<time<<" us"<<endl;
	return time;	
}
float command::rtest_bstree(vector<int> &rand)
{
	int i;
	int size = rand.size();
	bstree t;
	cout<<"inserting nodes to rbtree...";
	for(i = 0; i < size; i++)
		t.insert(rand[i]);
	cout<<"\t\tinsert finished\n";
	Timer tm;
	cout<<"finding 15000 in rbtree...";
	tm.Start();
	bool flag = t.find(15000); 
	tm.End();
	if(flag)
		cout<<"\t\tfound 15000!\n";
	long time = tm.costTime;
	cout<<"cost of finding 15000 in BINARY_SEARCH_TREE with 300000 nodes is "<<time<<" us"<<endl;
	return time;
}

void command::help()
{
	cout<<"\nrbtree v1.0\n";
	cout<<"Author: alpha\n\n";
	cout<<"arguments:\n";
	cout<<"You can open options below in command window by typing \'rbtree -ins -dot\'\n";
	cout<<"-ins:\tdraw JPG files to show process of inserting nodes;\n\tthis option is automatically opened when running \'test\' command\n";
	cout<<"\tWARNING:\n\tdon\'t open this option when inserting thousands of nodes,\n\tthat will exhaust your CPU\n";
	cout<<"-dot:\tkeep dot documents which generated to draw JPG files;\n";
	cout<<"\ncommands:\n";
	cout<<"help:\tget help;\n";
	cout<<"quit:\tquit the program;\n";
//	cout<<"setup:\tinstall the \'graphviz\' software;\n";
	cout<<"clear:\tclear command window;\n";
	cout<<"test:\ttest insert nodes to rbtree\n";
	cout<<"\tinsert 8,11,17,15,6,1,22,25,27 in turn, \n \
\toutput the rbtree in command window,\n \
\tand draw *.jpg file to show the process if installed \'graphviz\',\n \
\tand then delete node 15 for testing;\n";
//	cout<<"deletetest\n";
	cout<<"random:\tgenerate 300000 numbers and arrange them in random order,\n \
\tand then insert them to rbtree & bstree.\n \
\tThen timing the cost of finding 15000 in them;\n";
	cout<<"average: execute \'random\' five times and calculate the average cost;\n";
	cout<<"keyrank: insert 1-8 keys into OSTREE based on rbtree,\n\
\t and lookup the result of OS_KEY_RANK of 6\n";
	cout<<endl;
}

void command::clear()
{
	system("CLS");
}


?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲制服丝袜av| 亚洲gay无套男同| 欧美日韩精品一区二区三区| 国产一区在线不卡| 亚洲成人自拍网| 国产欧美日韩三区| 欧美一级夜夜爽| 91社区在线播放| 国产乱码字幕精品高清av| 亚洲电影一区二区| 日韩一区欧美一区| 久久青草欧美一区二区三区| 欧美精品在线观看播放| av不卡免费电影| 国产精品888| 麻豆成人在线观看| 亚洲成av人片www| 亚洲专区一二三| 国产精品二三区| 久久精品一区二区三区不卡牛牛| 欧美精品久久99| 久久嫩草精品久久久久| 欧美色成人综合| voyeur盗摄精品| 国产成人精品在线看| 久久激五月天综合精品| 男人的天堂亚洲一区| 亚洲成人动漫av| 一区二区三区不卡视频 | 99精品国产91久久久久久 | 日本在线不卡视频一二三区| 亚洲女人的天堂| 《视频一区视频二区| 国产拍揄自揄精品视频麻豆| 2020国产成人综合网| 日韩一区二区视频在线观看| 欧美日韩成人综合| 在线观看av一区二区| 91高清视频在线| 色婷婷综合五月| 91亚洲精品久久久蜜桃网站 | 国产一区在线精品| 狠狠久久亚洲欧美| 国产毛片一区二区| 国产99一区视频免费| 国产ts人妖一区二区| 国产剧情一区在线| 国产成人高清视频| 不卡欧美aaaaa| 波多野结衣在线一区| 99久久99久久精品国产片果冻| a亚洲天堂av| 91日韩一区二区三区| 91豆麻精品91久久久久久| 欧美在线一区二区三区| 欧美福利电影网| 欧美成人性福生活免费看| ww亚洲ww在线观看国产| 国产日韩精品一区二区三区| 国产精品色哟哟| 亚洲综合一二区| 日韩av电影免费观看高清完整版| 精品视频一区三区九区| 777a∨成人精品桃花网| 日韩女优电影在线观看| 日本一区二区在线不卡| 亚洲人妖av一区二区| 亚洲成人激情自拍| 精品一区二区三区免费毛片爱| 成人性生交大片免费看在线播放| 色婷婷久久一区二区三区麻豆| 欧美日韩一级片网站| 精品精品国产高清一毛片一天堂| 久久久噜噜噜久噜久久综合| 亚洲欧美日韩在线不卡| 蜜臂av日日欢夜夜爽一区| 成人激情动漫在线观看| 欧美日韩成人激情| 亚洲国产精品精华液2区45| 亚洲综合成人在线视频| 国产一区二区在线视频| 一本到高清视频免费精品| 欧美一区午夜视频在线观看| 国产精品乱码一区二三区小蝌蚪| 一区二区三区精品视频| 狠狠久久亚洲欧美| 色婷婷综合久色| 久久综合色8888| 亚洲韩国精品一区| 国产在线播放一区| 欧美影院一区二区| 国产日韩欧美综合在线| 亚洲成在人线免费| 不卡的av电影在线观看| 日韩视频免费观看高清完整版在线观看| 国产精品网站在线观看| 免费在线观看一区二区三区| 91亚洲男人天堂| 久久亚洲一级片| 午夜视频在线观看一区| 成人国产精品免费| 精品奇米国产一区二区三区| 亚洲午夜精品17c| 国产盗摄女厕一区二区三区| 欧美妇女性影城| 一区二区三区不卡视频 | 久久成人麻豆午夜电影| 色婷婷久久久综合中文字幕| 久久免费国产精品| 日日夜夜免费精品| 91官网在线免费观看| 中文字幕在线视频一区| 国产在线看一区| 欧美一区二区国产| 亚洲国产日韩精品| 93久久精品日日躁夜夜躁欧美| 国产亚洲精品久| 久久www免费人成看片高清| 欧美无乱码久久久免费午夜一区 | 日韩av在线免费观看不卡| 91色在线porny| 国产精品不卡在线| 粉嫩aⅴ一区二区三区四区五区| 日韩欧美国产一区二区在线播放| 午夜精品福利一区二区三区蜜桃| 色综合色综合色综合| 综合久久给合久久狠狠狠97色| 国产精选一区二区三区| 亚洲精品在线电影| 久草这里只有精品视频| 日韩免费观看2025年上映的电影 | 99re视频这里只有精品| 中文字幕的久久| 成人av在线观| 国产精品久久久久aaaa| aaa欧美大片| 亚洲欧美综合另类在线卡通| 99re8在线精品视频免费播放| 国产精品精品国产色婷婷| 懂色av一区二区夜夜嗨| 欧美激情一区二区| 99久久婷婷国产综合精品| 中文字幕一区二区三中文字幕| 99这里只有精品| 亚洲欧美日韩久久| 欧美日韩在线综合| 三级影片在线观看欧美日韩一区二区| 欧美日韩亚洲高清一区二区| 五月天欧美精品| 欧美一区二区三区在线观看| 久久99国内精品| 精品福利一区二区三区| 国产.欧美.日韩| 国产精品久久777777| 色综合一区二区| 午夜av一区二区| 精品人伦一区二区色婷婷| 国产91精品欧美| 亚洲激情中文1区| 正在播放亚洲一区| 国产精品一区二区三区乱码| 亚洲天堂免费看| 欧美男生操女生| 国产中文一区二区三区| 免费观看91视频大全| 久久久av毛片精品| 91在线观看成人| 日韩专区欧美专区| 国产免费久久精品| 色婷婷亚洲综合| 蜜桃精品在线观看| 中文字幕在线一区二区三区| 欧美日韩国产综合一区二区| 国内精品自线一区二区三区视频| 国产精品天美传媒沈樵| 欧洲精品在线观看| 激情欧美一区二区三区在线观看| 国产精品国产三级国产专播品爱网 | 欧美日韩一级大片网址| 韩国三级中文字幕hd久久精品| 亚洲婷婷在线视频| 欧美一区二区在线视频| 成人精品电影在线观看| 日韩精品一二三| 国产精品视频yy9299一区| 9191国产精品| 99国内精品久久| 极品销魂美女一区二区三区| 一区二区三区四区乱视频| 久久亚洲综合色一区二区三区| 色哟哟国产精品| 国产精一品亚洲二区在线视频| 亚洲成人精品影院| 亚洲国产精品ⅴa在线观看| 91精品麻豆日日躁夜夜躁| 99国产精品久| 国产河南妇女毛片精品久久久 | 国产欧美一区二区精品性| 欧美日韩精品一区二区天天拍小说 | 精品久久久久久久人人人人传媒 |