Что происходит, когда Front == сзади в круговой очереди - PullRequest
0 голосов
/ 28 мая 2010

Что происходит, когда спереди == сзади в круговой очереди

является ли очередь одним элементом или заполнена или пуста

Ответы [ 2 ]

6 голосов
/ 28 мая 2010

Это неоднозначно. Вам нужен другой механизм, чтобы отслеживать, заполнена ли очередь. См. Раздел «Трудности» на странице Википедии для обсуждения.

Чтобы процитировать с этой страницы, вот несколько идей о том, как ее решить:

Для решения этой проблемы существует количество решений:
- Всегда держите один слот открытым.
- Используйте счетчик заполнения, чтобы различать два случая.
- Используйте счетчик чтения и записи, чтобы получить счетчик заполнения.
- использовать абсолютные индексы

.

0 голосов
/ 28 мая 2010

Зависит от того, на что указывают фронт и тыл: элементы массива или объекты где-то в куче. (Вы не упомянули свой язык программирования.)

Если на вашем языке программирования nil не равно nil, ваша круговая очередь объектов будет иметь один элемент. Но если nil == nil оценивается как true ... вы не можете сказать :-)

В случае очереди, реализованной через массив, вы также не можете сказать это. Ваша очередь также может быть заполнена ...

...