NumberSize函数中的混淆

时间:2016-09-11 02:35:35

标签: c

我创建了一个函数,它将比较链表中的数字,以确定哪个数字最小,哪个数字最大。我知道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);
        }
    }
}

3 个答案:

答案 0 :(得分:1)

要访问列表中的第二个数字,您需要一个指向该数字的指针,该指针应该是第一个节点的next指针。在您的代码中,未定义next。它应该是这样的:

FirstNumber = determine->newNum;
SecondNumber = determine->next->newNum;

另外,您没有提供NewNumber的定义。如果定义发布在问题中会更清楚。

答案 1 :(得分:1)

您可以使用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()

  • 中提及格式说明符

答案 2 :(得分:0)

这应该这样做:

typedef struct a_node
{
    struct a_node* next;
    double n;
}Node;

void numberSize(Node* dList)
{
    if(dList == NULL)
    {
        return;
    }

    Node* current = dList;
    double a, b;

    while(current->next != NULL)
    {
        a = current->n;
        b = current->next->n;

        // your message.

        current = current->next;
    }
}