Bst Search

페이지 정보

작성자 : 에렐리앙 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 날짜 : 작성일09-10-26 20:13 조회 : 449회

본문

/****************************
 * file : bstree.c
 ****************************/
#include "search.h"

static int bst_total_cnt = 0;	/* 총 데이터의 수 */
static int bst_dup_cnt = 0;		/* 중복된 데이터를 제외한 데이터의 수 */
static LINT bst_cmp_cnt = 0;		/* 알고리즘 효율을 알아보기 위해 비교횟수를 셈 */

LINT bst_cmp_count(){	/* 비교 횟수 */
	return bst_cmp_cnt;
}
int bst_total_count(){
	return bst_total_cnt;
}
int bst_dup_count(){
	return bst_dup_cnt;
}

/*****************************
 *	트리정보 초기화 및 생성
 *****************************/
bst_t *newNode(char *data){
	bst_t *tmp;
	char *str_tmp;
	bst_dup_cnt++;/* 노드는 중복되어 생성 안되기 때문에 */
	if((tmp = (bst_t*)malloc(sizeof(bst_t))) == NULL){
		fprintf(stderr, "Memory allocate fail\n");
		return NULL;
	}
	str_tmp = (char *)malloc(strlen(data)+1);	/* string len + NULL */
	strcpy(str_tmp, data);
	tmp->left = NULL;
	tmp->right = NULL;
	tmp->data.data = str_tmp;
	tmp->data.cnt = 1;
	bst_total_cnt++; /* 총 데이터 수 */
	return tmp;
}


/*************************************************************************
 *	#include <string.h>
 *	int strcmp(const char *s1, const char *s2);
 *	s2 < s1  => -
 *	s2 > s1  => +
 *	s2 == s1 => 0
 *************************************************************************/
void addBST(bst_t **root, char *data){
	int datacmp;
	if((*root) == NULL){
		bst_cmp_cnt++;
		(*root) = newNode(data);
	}else {
		datacmp = strcmp((*root)->data.data,data);
		bst_cmp_cnt++;	/* 데이터 총 비교 횟수 */
		if(datacmp == 0) {
			((*root)->data.cnt)++;
			bst_total_cnt++; /* 총 데이터 수 */
		}
		else if(datacmp > 0)
			addBST(&((*root)->left), data);
		else 
			addBST(&((*root)->right), data);
	}
	return ;
}


/**********************************************
 * 트리에 저장된 값을 출력 해주는 함수
 * "책제목, 저자명, 중복된 책수"를 
 * 표 형식으로 출력 해줌
 **********************************************/
void printBST(bst_t *root){
	if(root){
		printBST(root->left);
		printTable(&(root->data));/* 표 형식으로 출력 해주는 함수 */
		printBST(root->right); 
	}
	return;
}

void algoBST(bst_t *root, int level){
	int i;
	if(root){
		algoBST(root->left, level+1);
		for(i = 0; i < level; i++) printf("      ");
		printf("%s\n", "P");
		algoBST(root->right, level+1);
	}
}
/* Memory allocate free function */
void freeBST(bst_t *root){
	if(root){
		printBST(root->left);
		printBST(root->right);
		free(root->data.data);
		free(root);
	}
}
Total 18건 1 페이지
게시물 검색
멤버게시판 목록
번호 제목 글쓴이 날짜 조회
18 2012년 1월 11일 파워 쿨러 랜카드 구매~ 에렐리안 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 15-11-03 30
17 2012년 10월 25일 컴퓨존에서 구매한 컴퓨터 부품 사양~ 에렐리안 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 15-11-03 32
16 test 에렐리앙 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 12-02-23 157
15 nod32 첨부파일비밀글 에렐리앙 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 12-02-22 3
14 리버웍 주소 에렐리앙 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 10-12-20 594
13 blog와 cafe의 특징 및 구성등을 분류하여 작성하세요 에렐리앙 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 09-12-09 605
열람중 Bst Search 에렐리앙 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 09-10-26 450
11 sort와 알고리즘 에렐리앙 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 09-10-19 689
10 알고리즘 과제 댓글1 에렐리앙 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 09-10-05 774
9 WindowsXP정품혜택 첨부파일비밀글 에렐리앙 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 09-05-07 6
8 자작 플래시 ㅋㅋㅋ 에렐리앙 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 09-04-13 643
7 locked 비밀글 에렐리앙 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 09-04-06 9
6 저질사양 가격표 에렐리앙 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 09-02-28 664
5 일단 멤버게시판 형태는 대충 갖춘거 같으니깐 에렐리앙 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 09-02-19 492
4 하루일과 시작과 동시에 하는게 이거엿지? 에렐리앙 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 09-02-19 584
Today
24
Yesterday
70
Total
70,313