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;
}

Podobne dokumenty