Показать сообщение отдельно
Старый 02.05.2004, 22:15     # 37
Dimm
Добрый фей-мод
 
Аватар для Dimm
 
Регистрация: 18.09.2002
Адрес: Израиль
Пол: Male
Сообщения: 4 155

Dimm СуперБогDimm СуперБог
Dimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБогDimm СуперБог
joker99
Ну скажем не совсем так. Вторая функция у тебя не правильна.
Во-первых когда ты
Цитата:
достаёшь элемент
иначе говоря делаешь dequeue() элемент должен удалятся из массива и продвигать надо другой индех. И кроме того, почему сразу
Цитата:
queue_full = false;
.
Вот правильная имплементация dequeue():
Я держу переменные head (продвигается вправо когда элемент достаётся), tail (продвигается вправо когда елемент кладут в очередь) и count (для контроля над количеством элементов).
Код:
Object dequeue()
{
    if ( count == 0 )
      throw new Exception("Queue is empty");
   
    Object result = array[head];
    array[head] = null; 
    head = ++head % array.length;
    count--;

    return result;
}
Код enqueue() приводить не буду, посколько ты всё правильно написал. В моём случае двигался бы tail.
__________________
Фотолюбительщина

Пока слова не сказаны - ничего нет. Но если они сказаны, даже то чего нет становится реальностью.
Dimm вне форума