Kolejka - struktura FIFO Kolejka w rozumieniu potocznym
Transkrypt
Kolejka - struktura FIFO Kolejka w rozumieniu potocznym
Kolejka - struktura FIFO Kolejka w rozumieniu potocznym - kto pierwszy przyszedł zostanie pierwszy obsłużony i pierwszy wychodzi, (pierwszy na wejściu, pierwszy na wyjściu). 1. Kolejka jest jednym z podstawowych abstrakcyjnych typów danych, często określana mianem FIFO (First In - First Out). wstawienie liczby np.6 jest możliwe tylko na koniec kolejki jedyną liczbą, którą możemy pobrać jest 2 2 4 1 12 40 3 kierunek kolejki 2. Jedyne możliwe operacje do wykonania na kolejce to: a. dodanie elementu na koniec kolejki b. usunięcie (pobranie) pierwszego elementu z kolejki Kolejka priorytetowa to specjalna modyfikacja kolejki – każda ze znajdujących się w niej danych dodatkowo ma przypisany priorytet, który modyfikuje kolejność późniejszego wykonania. Oznacza to, że pierwsze na wyjściu niekoniecznie pojawią się te dane, które pojawiły się pierwsze, lecz te o największym priorytecie. Kolejka przykład: #include<iostream> using namespace std; struct Kolejka{ int element; Kolejka *nastepny; }; Kolejka *dodaj(int element, Kolejka *koniec){ Kolejka *nowy; nowy = new Kolejka; nowy -> element = element; nowy -> nastepny = NULL; if (koniec) koniec -> nastepny = nowy; return nowy; } Kolejka *usun(int *element, Kolejka *poczatek){ if (poczatek){ Kolejka *nowy; *element = poczatek -> element; nowy = poczatek -> nastepny; delete poczatek; return nowy; } else return NULL; } void wypisz(Kolejka *nowy){ cout<<"kolejka: "; while (nowy != NULL){ cout << nowy -> element << " "; nowy = nowy -> nastepny; } cout<<endl; } void wypelnij_usun(){ int n, liczba; Kolejka *poczatek, *koniec; cout << "podaj ilosc elememtow: "; cin >> n; cout << "\npodaj liczbe: "; cin >> liczba; poczatek = koniec = dodaj(liczba, NULL); wypisz(poczatek); for(int i = 1; i < n; i++){ cout << "podaj liczbe: "; cin >> liczba; koniec = dodaj(liczba, koniec); wypisz(poczatek); } cout<<endl; while (poczatek != NULL){ poczatek = usun(&liczba, poczatek); cout << "usuwana liczba: " << liczba<<endl; wypisz(poczatek); if(poczatek == NULL) cout << "kolejka pusta"; } } main(){ wypelnij_usun(); return 0; }