Advertisement

if语句的区别

阅读量:

目录

议题深入探讨

议题简要阐述

归纳总结


话题深入探讨

昨日在编写二叉搜索树相关程序时,我完成了一段代码,然而当插入超过三个节点后,系统便出现异常并导致程序终止,具体代码如下:

复制代码
 while(p){

    
 		q = p;//改变之前保存父节点 
    
 		if(element.key == p->data.key) return false;//发生重复不可插入
    
 		if(element.key < p->data.key) p = p->leftChild;
    
 		if(element.key > p->data.key) p = p->rightChild;
    
 	} 
    
    
    
    

初看这段代码似乎并无明显错误,但为何会出现报错情况呢?经过后续测试确认,问题源于对多重if语句的不规范应用。当程序执行到第二个if语句,即以下这个if语句时:

复制代码
    if(element.key < p->data.key) p = p->leftChild;
    

此时若第二个条件成立,p指针的值将发生改变,因此在执行第三个if判断时,所使用的数值已不再是原先的值,这可能导致第三个条件依然成立。通过将代码调整为标准的if else结构,该

全部评论 (0)

还没有任何评论哟~