设为首页 加入收藏

TOP

红黑树用来存储单个汉字GBK编码(五)
2014-11-24 13:59:58 来源: 作者: 【 】 浏览:5
Tags:用来 存储 单个 汉字 GBK 编码
node->parent=drop->parent;
myfree (drop);
delete_fixup (node, curnode,mode);


}
else
{
suc=next ( drop->right);
value=drop->m_data;
drop->m_data=suc->m_data;
suc->m_data=value;


if(suc->parent->left==suc)
{
mode=0;
}
else
{
mode=1;
}


if(!suc->right)
{


if(0==mode)
{
suc->parent->left=0;
}
else
{
suc->parent->right=0;
}


myfree(suc);
}
else
{
if(0==mode)
{
suc->parent->left=suc->right;
}
else
{
suc->parent->right=suc->right;
}


curnode=suc->right;
curnode->parent=suc->parent;
myfree(suc);
delete_fixup (node ,curnode,mode);


}


}
node->size--;
}
else
{
}
node->root->m_color=BLACK;
}


void insert ( wrapdata *node , int data )
{
redblack *newnode;
redblack *curnode;
int relation;


node->size++;
newnode=newstruct (data);
// printf("will insert %x %d \n",newnode,data);


if ( ! node->root)
{
node->root= newnode;
}
else
{
curnode=node->root;
while(1)
{
relation=compare(data,curnode);
if(relation==-1)
{
node->size--;
myfree(newnode);
return ;
}
else
{
if ( relation==1)
{
if (!curnode->right)
{
curnode->right=newnode;
newnode->parent=curnode;


break;
}
else
{
curnode=curnode->right;
}
}
else
{
if (!curnode->left)
{
curnode->left=newnode;
newnode->parent=curnode;
break;
}
else
{
curnode=curnode->left;
}
}
}
}
insert_fixup ( node , newnode);
}
node->root->m_color=BLACK;
}



int main()
{
int i;
wrapdata *node;
data *newdata;
int count;
int word_count;
int word_buffer[RAND]={0};


FILE *fp = NULL;
char buffer[64] = "";
uint value = 0;
char *pvalue = NULL;
int weight = 0;
int ikeylen = 0;
char strFilePath[128] = "";


char buf[100]="";
unsigned char word[100]="\0";
int gbk=0;



init();
srand(time(NULL));
node=(wrapdata*)calloc (1 ,sizeof (wrapdata));
global_node=node;



getcwd(buf, sizeof(buf)-1);
sprintf(strFilePath, "%s/%s", buf ,"single.txt");
fp = fopen(strFilePath, "rt");



word_count=0;
while (fgets(buffer, sizeof(buffer) - 1, fp) > 0)
{


pvalue = (char *)memchr(buffer, '\t', sizeof(buffer));
ikeylen = (pvalue - buffer);
memcpy( word ,buffer ,ikeylen);


// printf("add word %s ",buffer);
gbk=word[0] * 256 + word[1];
insert(node ,gbk);
word_buffer[word_count++]=gbk;
}
fclose(fp);



while(1)
{



// printf("into insert mode\n");
while( node->size< word_count)
{
i=rand()%word_count;
insert (node ,word_buffer[i] );
count=check(node->root);
if(count)
{
// printf("\ncheck error\n");
// mid_print(node->root,0);
return ;
}
/*
count=mid_print (node->root,0);
if(count!=node->size)
{
// printf("\n %d %d \n",count ,node->size);
return ;
}
*/


if(error_label)
{
return ;
}

if(node->size==word_count*2/3)
{
// mid_print(node->root,0);
printf("%d %d \n",node->size,depth (node->root));


}

}
// mid_print(node->root,0);
// printf("into delete mode\n");
while( node->size> word_cou

首页 上一页 2 3 4 5 下一页 尾页 5/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Python发送HTTP请求 下一篇Java反射机制与实例应用

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: