示例#1
0
int main() {
	struct avltree *tree;
	struct kvnode head;
	struct kvnode *tail;

	struct kvnode *p;
	char buf[200];
	int retval;
	char *str;
	struct node **ins;

	FILE *f = fopen("bible.txt","r");
	int start,end;

	tail = &head;
	tree = avltree_create(cmpf, setf);


	start = clock();
	while((retval = fscanf(f,"%s",buf)) != EOF) {
		str = malloc(strlen(buf)+1);
		strcpy(str,buf);
		p = node_create(str,1);
		ins = avltree_find(tree,p);
		if(*ins == NULL) {	//第一次
			*ins = p;
			avltree_adjust(tree);
			tail->next = p;
			tail = p;
		} else {	//直接插,不用平衡调整了
			((struct kvnode*)(*ins))->val ++;
		}
	}
	end = clock();
	printf("%d\n",end-start);
	/*
	for(p=head.next; p!=tail; p=p->next) {
		printf("%s,%d\n",p->key,p->val);
	}*/
	return 0;
}
示例#2
0
struct avltree * stravltree_create()
{
	return avltree_create(cmp,del);	
}