Aby spróbować nadmiernie uprościć opis stosu i kolejki, oba są dynamicznymi łańcuchami elementów informacyjnych, do których można uzyskać dostęp z jednego końca łańcucha, a jedyną prawdziwą różnicą między nimi jest fakt, że:
podczas pracy ze stosem
- wstawiasz elementy na jednym końcu łańcucha i
- pobierasz i / lub usuwasz elementy z tego samego końca łańcucha
będąc w kolejce
- wstawiasz elementy na jednym końcu łańcucha i
- pobierasz / usuwasz je z drugiego końca
UWAGA : Używam abstrakcyjnego sformułowania pobierania / usuwania w tym kontekście, ponieważ zdarzają się przypadki, gdy po prostu pobierasz element z łańcucha lub w pewnym sensie po prostu go czytasz lub uzyskujesz dostęp do jego wartości, ale są również przypadki, gdy usuwasz element z łańcuch i wreszcie są przypadki, gdy wykonujesz obie akcje tym samym wywołaniem.
Również element słowo jest celowo używany w celu jak największej abstrakcji wyimaginowanego łańcucha i oddzielenia go od określonych terminów języka programowania. Ta abstrakcyjna encja informacyjna zwana elementem może być czymkolwiek, od wskaźnika, wartości, ciągu lub znaków, obiektu ... w zależności od języka.
W większości przypadków jest to jednak wartość lub lokalizacja w pamięci (tj. Wskaźnik). A reszta po prostu ukrywa ten fakt za żargonem językowym <
Kolejka może być pomocna, gdy kolejność elementów jest ważna i musi być dokładnie taka sama, jak wtedy, gdy elementy pojawiły się w programie po raz pierwszy. Na przykład podczas przetwarzania strumienia audio lub podczas buforowania danych sieciowych. Lub gdy wykonujesz dowolny rodzaj przechowywania i przetwarzania dalej. We wszystkich tych przypadkach potrzeba, aby sekwencja elementów była wyświetlana w tej samej kolejności, w jakiej pojawiły się w programie, w przeciwnym razie informacja może przestać mieć sens. Możesz więc podzielić swój program na część, która odczytuje dane z niektórych danych wejściowych, wykonuje pewne przetwarzanie i zapisuje je w kolejce, a część, która pobiera dane z kolejki, przetwarza je i przechowuje w innej kolejce w celu dalszego przetwarzania lub przesyłania danych .
Stos może być pomocny, gdy potrzebujesz tymczasowo przechowywać element, który będzie używany w bezpośrednich krokach programu. Na przykład języki programowania zwykle używają struktury stosu do przekazywania zmiennych do funkcji. W rzeczywistości przechowują (lub wypychają) argumenty funkcji na stosie, a następnie przechodzą do funkcji, w której usuwają i pobierają (lub zdejmują) taką samą liczbę elementów ze stosu. W ten sposób rozmiar stosu zależy od liczby zagnieżdżonych wywołań funkcji. Dodatkowo, po wywołaniu funkcji i zakończeniu tego, co robiła, pozostawia ona stos w dokładnie takim samym stanie, jak przed wywołaniem! W ten sposób każda funkcja może działać ze stosem, ignorując sposób, w jaki inne funkcje z nim działają.
Na koniec powinieneś wiedzieć, że istnieją inne terminy używane dla tych samych lub podobnych pojęć. Na przykład stos można nazwać stertą. Istnieją również hybrydowe wersje tych koncepcji, na przykład podwójna kolejka może zachowywać się jednocześnie jako stos i kolejka, ponieważ oba końce mają do niej dostęp jednocześnie. Ponadto fakt, że struktura danych jest dostarczana jako stos lub jako kolejka, niekoniecznie oznacza, że jest zaimplementowana jako taka, istnieją przypadki, w których struktura danych może być zaimplementowana jako dowolna i dostarczona jako określona struktura danych po prostu dlatego, że można ją tak zachowywać. Innymi słowy, jeśli zastosujesz metodę push and pop do dowolnej struktury danych, magicznie staną się one stosami!