⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 demo_btree.cc

📁 用Borland C写的B-Tree算法
💻 CC
字号:
/***************************************************************************** * btree-mem-C/demo_btree.cc * * COPYRIGHT (c) 1995, 1997 by David Van Wagner ALL RIGHTS RESERVED * Source and executables may be distributed under the terms of the GNU * General Public License version 2, see the file COPYING for details. * * davevw@alumni.cse.ucsc.edu * http://alumni.cse.ucsc.edu/~davevw/ *****************************************************************************/#include <stdlib.h>#include <string.h>#include "btree.h"#include "btkey.h"BTREE_ROOT<BTREE_KEY_STR> *tree;void menu_display(){	cout << "a=add, c=count d=delete, e=empty, f=find, m=menu, p=print, q=quit"		<< endl;}void menu_response(char& c, char *dest, int size){	char s[1024];	cout << '>' << ' ' << flush;	*dest = '\0';	cin.width(sizeof(s));	cin >> s;	c = *s;	if (*s != '\0')		strncpy(dest, s+1, size);}void menu_do(char c, const char *s){	BTREE_POS pos;	BTREE<BTREE_KEY_STR> *node;	BTREE_KEY_STR key(s);	long value=atol(s);	long before, after;	BTREE_POS order=tree->get_order();	switch (c) {		case 'a':			before = tree->get_count();			node = tree->add(key, pos);			after = tree->get_count();			assert(before+1 == after);			cout << "added " << key << " at " << (void *)node << ", index "				<< int(pos) << endl;			break;		case 'c':			cout << "count of elements in tree = " << tree->get_count() << endl;			break;		case 'd':			node = tree->find(key, pos);			if (pos == -1)				cout << key << " not found" << endl;			else {				before = tree->get_count();				tree->remove(key);				after = tree->get_count();				assert(before-1==after);			}			break;		case 'e':			delete tree;			if (value > 2 && value%2 == 1)				order = value;			tree = new BTREE_ROOT<BTREE_KEY_STR>(order);			after = tree->get_count();			assert(after == 0);			break;		case 'f':			node = tree->find(key, pos);			if (pos == -1)				cout << key << " not found" << endl;			else				cout << "found at " << (void *)node << ", index " << int(pos)					<< endl;			break;		case 'p':			tree->display2(0);			break;		case 'm':		default:			menu_display();			break;	}}int main(int /*argc*/, char */*argv*/[]){	char c;	char s[80];	tree = new BTREE_ROOT<BTREE_KEY_STR>(3);	cout << "demo_btree" << endl << endl;	menu_display();	do {		menu_response(c, s, sizeof(s));		if (c != 'q')			menu_do(c, s);	} while (c != 'q');	delete tree;	return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -