主题:[讨论]求教
ylh0417
[专家分:0] 发布于 2006-10-20 11:25:00
if (!root || *s==\0) return NULL; 什么意思???
回复列表 (共2个回复)
沙发
zy1121 [专家分:7950] 发布于 2006-10-20 11:38:00
*s==\0 是错误语法,我想愿意应该是 *s=='\0'
意思是如果root为空或*s=='\0' 就返回NULL.
板凳
ylh0417 [专家分:0] 发布于 2006-10-22 08:49:00
BiTree insert_BST(char * str) {
BiTree root,parent,p;
char _______(1)________; /* 变量定义及初始化 */
root = (BiTree)malloc(sizeof(struct BSTNode));
if (!root || *s==\0) return NULL;
root->Lch = root->Rch = NULL;
root->Count = 1;
root->Elem = *s++;
for(;*s != \0;s++){
______(2)______;
parent = NULL;
while (p) {
/*p 从树根结点出发查找当前字符 *s 所在结点 */
parent = p;
if (*s == p->Elem) /* 若树中已存在当前字符结点,则当前的字符计数值加 1*/
{ p->Count++; break;}
else /* 否则根据字符 *s 与结点 *p 中字符的关系,进入 *p 的左子树或右子树 */
if (*s > p->Elem) p = p->Rch;
else p = p->Lch;
} /*while*/
if (______(3)_____) { /* 若树中不存在字符值为 *s 的结点,则申请结点并插入树中 */
p = (BiTree)malloc(sizeof(struct BSTNode));
if (!p) return NULL;
p->Lch = p->Rch = NULL;
p->Count = 1;
p->Elem = *s;
/* 根据当前字符与其父结点字符值的大小关系,将新结点作为左子树或右子树插入 */
if (p->Elem > parent->Elem) ______(4)_____ = p;
else _________(5)________ = p;
}
} /*for*/
return root;
能填一下空和对所填的空解释一下吗
我来回复