搜索列表时出现运行时错误


又是

我。我的搜索程序差不多完成了。但是,在单个链表中进行搜索时会出现运行时错误。只有当我用range搜索时才会发生。谢谢你的帮助。以下是相关代码:

int casearchrange(LIST *list,STUDENT **pPre,STUDENT **pLoc,int upper,int lower){
    *pLoc = list->head;
    for (;*pLoc!=NULL && lower>(*pLoc)->ca;){
        *pPre = *pLoc;
        *pLoc = (*pLoc)->next;
    }
    if (*pLoc==NULL)
        return 0;
    else {
        for (;(*pLoc)->ca<upper&&*pLoc!=NULL;)
            if ((*pLoc)->ca>=lower&&(*pLoc)->ca<=upper){
                printf("%sn%d  | %-18s|  %0.1f  |  %0.1f",RESULT,(*pLoc)->sid,(*pLoc)->name,(*pLoc)->ca,(*pLoc)->exam);
                *pLoc=(*pLoc)->next;
            }
            fflush(stdin);getch();
            return 1;
        }
}

一行中的测试
for (;(*pLoc)->ca<upper&&*pLoc!=NULL;)

是反向的。在检查*pLoc!=NULL之前,您将取消对*pLoc的引用,作为(*pLoc)->ca<upper测试的一部分。修复方法是简单地交换测试

的顺序。
for (;*pLoc!=NULL && (*pLoc)->ca<upper;)

相关内容

  • 没有找到相关文章

最新更新