Почему эта реализация очереди с двумя стеками неизменна и поточно-ориентирована? - PullRequest
0 голосов
/ 02 декабря 2011

Я видел такой способ реализации очереди с двумя стеками: https://stackoverflow.com/a/2050402/494094

И я читал, что таким образом очередь является неизменной и поточно-ориентированной. Какой смысл отделять это от обычной очереди и делать ее неизменной и поточно-ориентированной?

Я был бы очень признателен, если бы кто-то мог объяснить это простым, непрофессиональным способом.

1 Ответ

2 голосов
/ 02 декабря 2011

Как реализовать очередь с использованием двух стеков? объясняет больше и имеет некоторый код.

Если вы сделаете это низкоуровневым способом, у вас будет две области памяти и два указателя Один указатель увеличивается при записи, другой при чтении

Как только область чтения израсходована, вы переворачиваете область записи и меняете их местами.

Таким образом, нет никакой возможности, чтобы чтение мешало написанию и наоборот. Единственное соединение между этими двумя операциями происходит во время операции «реверс и своп», и тогда все должны ждать.

...