当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;
}
}
答案 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循环之外进行初始化。