2016-01-11 105 views
0

我正在嘗試編寫計數隊列中的數字的代碼。問題是我刪除了原始隊列中的項目,我寧願將它保存原樣。做計數功能排隊

這是我的代碼:

public static int Count(Queue<int> q) //checks how many items there's in the argument queue. 
    { 
     Queue<int> pos = q; 
     Queue<int> qtemp1 = new Queue<int>(); 
     int counter = 0; 
     while (pos != null && pos.IsEmpty()) 
     { 
      qtemp1.Insert(pos.Remove()); 
      counter++; 

     } 
     return counter; 
} 
+0

我發現了一個小的解決方案 - 在函數結束時,返回前行吧,我做了,而其中插入環回將項目發送到原始隊列。 –

回答

0

嘗試q.count

public static int Count(Queue<int> q) 
{ 
    return q.Count; 
} 
+0

不可能。 count函數需要q作爲參數... 代碼是正確的,它確實返回隊列中有多少物品,問題是該函數在計算它們時刪除物品。 –

+0

等等,什麼?當然,你需要指定你計算的隊列,在這種情況下是'q'(就像你在你的問題中一樣!)。所有Queue.Count所做的都是將隊列中的項目數作爲整數返回,這基於您的問題正是您要求的。 Queue.Count不會刪除隊列中的任何項目。 – charliefox2

+0

我知道,它不應該刪除,但它是。如果你要調試代碼,你會發現在我調試函數後q是空的。 –