2013-04-19 33 views
0

我有一個for循環,它被設計用於獲取目標編號,並循環遍歷堆棧,直到找到數據在堆棧[目標],它應該返回該數據。自定義堆棧的「seek」函數返回陣列中的位置而不是數組中的位置值

不幸的是,我只能得到它返回它所在的數組的位置或隨機數字的字符串(它隨着我的代碼週期性地改變)。

我試着只是返回stackArray [計數器],但行爲就好像我只是返回計數器。 然後,我改變了代碼來創建一個新的變量,然後返回該變量,我回到了數字字符串。我認爲這與我的堆棧數組是一個指針有關?在這裏打磚牆,這樣任何輸入都會有所幫助。

這裏是我的循環(最新版本至少我已經嘗試過許多不同的方式。):

for (int counter = 0; counter < target; counter++) 
    { 
     if (stackArray[counter] == target) 
     { 
      answer = stackArray[counter]; 

     } 
     cout << "beep " << counter << " " << target << endl; 

    } 
+0

這段代碼沒有任何意義。如果你想'stackArray'的'target'-index項目,你可以直接訪問它(stackArray [target])。如果你想找到包含值「target」的數組的索引,那麼你的循環需要運行到數組的末尾,而不是「目標」,然後「應答」將被設置爲「計數器」,而不是'stackArray [計數器]'。 –

+0

哇,突然它點擊了,我根本不需要for循環來訪問這個..我想我的思想仍然在以某種模糊的方式思考鏈表。我很困惑,我的實驗室實際上應該做什麼現在..它就像是一個實驗室,如果我所要做的就是返回(stackArray [目標]),我認爲我過於複雜,因爲它現在看起來太簡單了。謝謝。再次編輯。我認爲我應該做的是相反的,因爲堆棧是最後進入先出,我想我現在得到它 – user2271589

回答

2

返回在for循環相匹配的值很簡單。只需在if塊內添加return語句即可。

for (int counter = 0; counter < target; counter++) 
{ 
    if (stackArray[counter] == target) 
    { 
     answer = stackArray[counter]; 

     return answer; // <--- 
    } 
} 

這使得很沒有意義,雖然你已經知道什麼answer會因爲你與target尋找它。您的for循環看起來不正確,因爲您正在迭代到target這意味着答案已知,可以直接使用stackArray[target]訪問。在執行此搜索時,您希望一直搜索到數組的末尾。

+0

抱歉不清楚,但那個結束與計數器和目標的cout聲明不是我我只是在測試看循環在做什麼,我試圖做的是當for語句中的if語句爲真時return語句返回答案的值 – user2271589

+2

用'return answer; ' –

+0

對不起,我對這個網站真的很陌生,它說你更新了一些東西,但這讓我感到困惑。你引用了我的代碼,但唯一改變的是cout語句。這種說法是不必要的。我試圖輸出它的方式是將它重新調整到主程序。所有這些功能應該做的就是返回答案,答案是堆棧[目標]的數據,所以cout staement不會改變任何東西,不幸的是,我不明白爲什麼它不返回數據與計數器的值 – user2271589

相關問題