2015-10-18 56 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