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

时间:2013-05-07 07:54:46

标签: c linked-list runtime-error

再次,我。我的搜索程序差不多完成了。但是,在单个链接列表中搜索期间存在运行时错误。它只发生在我用范围搜索时。谢谢你的帮助。这是相关的代码。

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("%s\n%d  | %-18s|  %0.1f  |  %0.1f",RESULT,(*pLoc)->sid,(*pLoc)->name,(*pLoc)->ca,(*pLoc)->exam);
                *pLoc=(*pLoc)->next;
            }
            fflush(stdin);getch();
            return 1;
        }
}

1 个答案:

答案 0 :(得分:3)

行中的测试

for (;(*pLoc)->ca<upper&&*pLoc!=NULL;)

是错误的方式。在检查*pLoc之前,您将取消引用(*pLoc)->ca<upper作为*pLoc!=NULL测试的一部分。修复只是交换测试的顺序

for (;*pLoc!=NULL && (*pLoc)->ca<upper;)