This question already has an answer here:
Closed 3 years ago.
Invalid operands to binary in my 'NumberSize' function
(1个答案)
我已经创建了一个函数,它将比较链接列表中的数字,以确定哪个数字最小,哪个数字最大。我知道FirstNumber = determine->newNum;指向列表中的当前数字。
我如何调用SecondNuumber = ?;来获取列表中的下一个号码?
typedef struct A_NewNumber {
   struct A_NewNumber *next;
   double newNum;
} NewNumber;

void NumberSize(NewNumber *start){

    NewNumber *determine = start;
    double SecondNumber =0;
    double FirstNumber = 0;
    while(determine){
        //the number from the current node
        FirstNumber = determine->newNum;
        SecondNuumber = next->newNum;

        if(FirstNumber < SecondNumber){
            printf("The biggest number is:\n", SecondNumber);
        }else{
            printf("The smallest number is:\n", FirstNumber);
        }
    }
}

最佳答案

您可以使用newNum访问下一个节点中的determine->next->newNum,并通过以下方式更改while循环:

while(determine->next != NULL){
    //the number from the current node
    FirstNumber = determine->newNum;
    SecondNuumber = determine -> next->newNum;

    if(FirstNumber < SecondNumber){
       printf("The biggest number is:%lf\n", SecondNumber);
       printf("The smallest number is:%lf\n", FirstNumber);
    }else{
       printf("The biggest number is:%lf\n", FirstNumber);
       printf("The smallest number is:%lf\n", SecondNumber);
    }

    determine = determine -> next;//to traverse along the list
}

如果在末尾提供determine = determine -> next;是遍历或沿着链表移动所必需的,否则您将被困在同一个位置,这将使您的循环成为一个无限循环
你忘了在printf()中提到格式说明符

10-06 01:34