2016-01-11 3 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 пуст после того, как я отлаживаю функцию –

Смежные вопросы