2012-10-06 102 views
0

比方說,我想彈出堆棧中的對象並檢查它們的狀態,無論是否爲FUP(朝上)。擠壓代碼?

我想繼續這樣做,直到我到達堆棧爲空的點或實例的狀態不朝上;在這種情況下,我需要推回這個實例並停止循環。

下面是做這件事的一種方法:

bool isfup = true; 

while(pop(stack, &ins) && isfup = ins->state == FUP) 
{ 
    // continue removing elements from stack 
} 

if(isfup == false) 
    push(stack, ins); 

這裏就是我如何做到這一點:

while(pop(stack, &ins) && (ins->state == FUP || (push(stack, ins) && false))); 
// while(A && (B || (C && false))); 

我的問題是,我應該停止編寫代碼這種風格,去清晰?或者我應該保留它?

回答

4

將它放在一個使用長而清晰的方式的函數中,然後在需要調用時在一行中調用該函數。畢竟,這是程序編程中函數的目的之一! :-)

1

如果堆棧最初爲空或變空,則您的元碼將崩潰。 另外,作爲一個風格問題,檢查頂級元素,然後選擇POP或繼續

while(!stackEmpry(stack) && (top(stack)->state==FUP)) { pop(stack); } 
1

任何非一次性項目將通過您或他人多次比寫多讀。這種編碼風格需要更長的時間來編寫,甚至更長的時間來閱讀,不會運行更快,更容易出錯。你想達到什麼目的?

在美好的舊時代,當人們在紙上打印代碼時,你可能有一個藉口,但在這個時代,視網膜顯示無處不在...