在链表中查找最大/最小值

时间:2012-03-22 21:13:24

标签: linked-list

当while循环迭代时,它会跳过两个“if”循环,当“q = q-> next”语句运行时,max和min值也都会改变。我没有正确初始化最大/最小整数?

void FindMaxMin(int& max, int& min)
    {
        NODE* q;
        q=List; //to start over
        while(q != NULL)
        {
            max=min=q->info; //Sets max and min to first value

            if(q->info>max)
                max=q->info;
            if(q->info<min)
                min=q->info;
            q=q->next;
        }
    }

2 个答案:

答案 0 :(得分:3)

每个循环周期将最大值/分钟初始化为当前元素值。这就是为什么跳过ifs(因为数据既不多于也不小于实际值 - 它是相同的)。

你应该写这样的东西来正确初始化最大/最小数据:

void FindMaxMin(int& max, int& min)
{
    NODE* q;
    q=List; //to start over
    max=min=q->info; //Sets max and min to first value
    while(q != NULL)
    {
        if(q->info>max)
            max=q->info;
        if(q->info<min)
            min=q->info;
        q=q->next;
    }
}

答案 1 :(得分:0)

将max和min重置为每个节点迭代的当前节点的info值。

在while循环之外进行初始化。