2012-03-22 36 views
2

當while循環迭代時,它會跳過兩個「if」循環,並且當「q = q-> next」語句運行時,最大值和最小值也都會改變。我是不是正確初始化最大/最小整數?查找鏈表中的最大/最小值

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; 
     } 
    } 

回答

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; 
    } 
} 
+0

哇。菜鳥的錯誤。不知道在while循環中如何初始化!謝謝! – BuzzSmarter 2012-03-22 21:21:17

+0

不客氣:) – 2012-03-22 21:24:34

0

您重置最大和最小爲每個節點迭代當前節點的信息價值。

在while循環之外進行初始化。

相關問題