Вы не увеличиваете i
в pop()
, поэтому цикл while будет работать бесконечно.
В режиме push вы используете цикл for, который увеличивает i
: :for(int i=0;i<length;i++ /*here*/)
Вы также не инициализируете i
в pop()
, поэтому оно, вероятно, будет иметь значение последнего приращения в push()
.Это значение будет индексом следующего пустого элемента (если он остался один), и это в любом случае неверно.Однако вы хотите получить всплывающее окно, поэтому вам нужно начинать с i = 0
- в этом случае также будет работать другой цикл for, т.е. вы просто копируете значение элемента с i+1
в индекс i
и установите для последнего элемента значение null
(для большей эффективности вы можете остановиться, если i+1
имеет элемент null
).
Редактировать: теперь, когда вы опубликовали большекод для pop()
ситуация немного другая.Вы уже используете цикл for в pop()
, но внутри него еще один цикл.Я предполагаю, что вы хотите сделать if(i<(length-1))
вместо while(i<(length-1))
- но в этом случае вам все равно придется обрабатывать последний элемент, т. Е. После заполнения очереди вам нужно будет установить последний элемент на null
, когдавы выдвигаете один, а остальные перемещаете.