如何检查节点是否有值?因为如果我这样做:
if(strcmp(current->left->value,"")!=0)
即使在我这样做之前,它也总是有一个带有心形、微笑和其他东西的随机值:
current->left = (struct baseLL*) malloc(sizeof(struct baseLL));
这是我的结构:
struct baseLL {
char value[32];
struct baseLL *right,*left,*prev;
}; struct baseLL *current;
最佳答案
当你 malloc 一个新节点时,value 中的数据是未初始化的。因此,该数组包含很可能不等于 ""
(空字符串)的垃圾数据。
相反,您可以尝试在 malloc 之后直接使用 current->left->value[0]='\0';
初始化值。然后,您确实可以使用 strcmp 检查节点是否具有值。
关于检查具有空数据的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25810032/