回 帖 发 新 帖 刷新版面

主题:[讨论]求教

if (!root || *s==\0) return NULL; 什么意思???

回复列表 (共2个回复)

沙发

*s==\0 是错误语法,我想愿意应该是 *s=='\0'
意思是如果root为空或*s=='\0' 就返回NULL.

板凳

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; 
能填一下空和对所填的空解释一下吗

我来回复

您尚未登录,请登录后再回复。点此登录或注册