Стек срещу опашка
Stack е подреден списък, в който вмъкването и изтриването на елементи от списъка може да се извърши само в единия край, наречен върха. Поради тази причина, стекът се счита за структура от данни Last in First out (LIFO). Опашката е също така подреден списък, в който вмъкването на елементи от списъка се извършва в единия край, наречен отзад, а изтриването на елементи се извършва в другия край, наречен отпред. Този механизъм за вмъкване и изтриване превръща опашката в структура на данни First in First out (FIFO).
Какво е стек?
Както бе споменато по-рано, стека е структура от данни, в която елементите се добавят и премахват само от един край, наречен върх. Стековете позволяват само две основни операции, наречени push и pop. Операцията за натискане добавя нов елемент в горната част на стека. Поп операцията премахва елемент от горната част на стека. Ако стекът вече е пълен, когато се извършва натискане, той се счита за препълване на стека. Ако поп операция се извърши на вече празен стек, тя се счита за подтока на стека. Поради малкия брой операции, които биха могли да бъдат извършени на стек, той се счита за ограничена структура на данни. Освен това, според начина, по който са дефинирани push и pop операциите, е ясно, че елементите, добавени последно в стека, излизат първо от стека. Следователно стекът се счита за LIFO структура на данни.
Какво е опашката?
В опашката се добавят елементи от задната страна на опашката и се премахват от предната страна на опашката. Тъй като елементите, които са добавени първо, първо ще бъдат премахнати от опашката, той поддържа реда на FIFO. Поради този ред на добавяне и премахване на елементи, опашката представлява идеята за линия за плащане. Общите операции, поддържани от опашка, са операции на опашка и на опашка. Операцията на опашката ще добави елемент в задната част на опашката, докато операцията за извеждане на опашка премахва елемент от предната страна на опашката. Като цяло опашките нямат ограничение за броя на елементите, които могат да се добавят към опашката освен ограниченията на паметта.
Каква е разликата между Stack и Queue?
Въпреки че и стековете, и опашките са видове подредени списъци, те имат някои важни разлики. В стекове добавянето или изтриването на елементи може да се извърши само от единия край, наречен най-отгоре, докато в опашките добавянето на елементи се извършва от единия край, наречен отзад, а изтриването на елементи се извършва от другия край, наречен отпред. В стека елементите, които са добавени последни към стека, ще бъдат премахнати първо от стека. Следователно стекът се счита за LIFO структура на данни. В опашки елементите, които са добавени първо, ще бъдат премахнати първо от опашката. Следователно опашката се счита за структура на данни на FIFO.
Свързана връзка:
Разлика между Stack и Heap