Я новичок в структуре данных. Я рассмотрел реализацию линейной очереди после получения ссылки на многие книги.Разница между линейной очередью и круговой очередью
Это моя реализация для линейной очереди.
public class QueueObject {
private Object[] heads;
private int rearPointer, frontPointer, currentNumber;
public QueueObject(int capacity) {
heads = new Object[capacity];
}
public boolean isEmpty(){
return (currentNumber == 0);
}
public boolean isFull(){
return (currentNumber == heads.length);
}
public void push(Object o){
if(isFull()){
return;
}
// means we are at last position (deal with wrap around)
if(rearPointer >= heads.length){
rearPointer = 0;
}
heads[rearPointer++] = o;
currentNumber++;
}
public Object pop(){
if(isEmpty()){
return null;
}
// dealing with wrap around
if(frontPointer >= heads.length){
frontPointer = 0;
}
Object o = heads[frontPointer++];
currentNumber--;
return o;
}
}
Теперь мой вопрос заключается в том, что обработка обертки вокруг круговой очереди вместо линейной очереди?
То, что вы есть круговой очереди (кольцевой буфер). Линейная очередь всегда добавляется сзади и удаляется спереди. Внедрение линейной очереди в массиве неэффективно, потому что каждый раз, когда вы удаляете элемент, вам нужно переместить все остальные предметы, чтобы заполнить пустое место. –
Спасибо, на самом деле я нашел эту реализацию в двух трех книгах и запутался. – Ishan