2015-10-18 12 views
1

我在while循環中使用幾乎相同的語句或操作,並且如果因語句的條件分別使用它們,我可以做些什麼來減少相同語句的數量我提到一個代碼,一塊是低於我怎樣才能加入while循環的字段,如果語句

你可以幫我...

while(current1!=*head1) 
    { 
     int new_carpim=(current2->number)(current1->number); 
     int updateResult=new_carpim+current3->number; 

     if(updateResult==2) 
     { 
      carry_happend(*head3,current3); 

     } 

     else 
     { 
      current3->number=updateResult; 
     } 

     current1=drive_temp(*head1,temp1,current1); 
     current3=drive_temp(*head3,temp3,current3); 


    } 

    if(current1==*head1) 
    { 
     int new_carpim=(current2->number)(current1->number); 
     int updateResult=new_carpim+current3->number; 

     if(updateResult==2) 
     { 
      carry_happend(*head3,current3); 

     } 

     else 
     { 
      current3->number=updateResult; 
     } 
+0

是不是'if(current1 == * head1)'冗餘?只有當他的條件成立時,「while」循環纔會發生。 – Downvoter

+0

我在它上面乘以兩個二進制數,所以我必須取第一個數字的最後一位數(current1 == * head1) – karabugra05

+0

我正在遍歷我的鏈表從頭到尾,頭是我最後一個數字,我必須使用 – karabugra05

回答

0
while(1) //1 = true = (current1==*head or current1!=*head) 
    { 
     int new_carpim=(current2->number)(current1->number); 
     int updateResult=new_carpim+current3->number; 

     if(updateResult==2) 
     { 
      carry_happend(*head3,current3); 

     } 

     else 
     { 
      current3->number=updateResult; 
     } 

     if(current1==*head1){ 
       break; 
     } 

     current1=drive_temp(*head1,temp1,current1); 
     current3=drive_temp(*head3,temp3,current3); 


    } 

更普遍:

while (condition1 || condition2){ //if condition1 || condition2 == true, make sure to break the loop 
    if(condition 1) 
      //do something for c1 
    else if (condition2) 
      // do something for c2 
    //do something for either c1 or c2 
} 
+0

,但是,我遍歷了從最後一個節點到頭節點的當前指針,並做了一些操作在節點上,我會將電流再次移動到最後一個節點,所以問題再次出現我的情況。 – karabugra05

+0

如果你的腦袋裏現在已經擺脫了while循環,你可以看到:if(current1 = = * head1){break; }'。在那種情況下,你不會達到寫過的行。 –

+0

謝謝你,@Giri Papi,我會試試你的方式 – karabugra05