/** * Kolejka liczb całkowitych - implementacja tablicowa * @author kodatnik.blogspot.com */ public class Kolejka { // tablica przechowująca elementy kolejki private int[] wektor; // początek kolejki (indeks elementu znajdującego się na początku) private int poczatek; // koniec kolejki (indeks elementu znajdującego się na końcu) private int koniec; // liczba elementów kolejki (pole pomocnicze) private int rozmiarKolejki; // konstruktor domyślny (tworzy kolejkę 10 elementową) public Kolejka() { // wywołujemy konstruktor z parametrem int (czyli ten poniżej) this(10); } // konstruktor jednoparametrowy public Kolejka(int rozmiar) { // tworzymy tablicę o rozmiarze przekazanym jako parametr wywołania wektor = new int[rozmiar]; // ustawiamy początkowe wartości pól (można to pominąć, domyślnie pola będą miały wartość zero) poczatek = 0; koniec = 0; rozmiarKolejki = 0; } // metoda dodaje element do kolejki public void dodaj(int liczba) { // wpisujemy na koniec kolejki element // (operacja modulo da nam odpowiedni indeks tablicy) wektor[koniec % wektor.length] = liczba; // zwiększamy indeks końca oraz rozmiar kolejki koniec++; rozmiarKolejki++; } // metoda usuwa element z kolejki public int usun() { // pobieramy element z początku kolejki // (operacja modulo da nam odpowiedni indeks tablicy) int temp = wektor[ poczatek % wektor.length]; // zwiększamy indeks początku kolejki poczatek++; // zmniejszamy rozmiar kolejki rozmiarKolejki--; // zwracamy usunięty element return temp; } // metoda sprawdza czy kolejka jest pusta public boolean czyPusta() { // zwracamy prawdę lub fałsz return (rozmiarKolejki == 0); } // metoda sprawdza czy kolejka jest pełna public boolean czyPelna() { // zwracamy prawdę lub fałsz return (rozmiarKolejki == wektor.length); } // metoda "podgląda" co jest na początku kolejki public int zobacz() { // zwracamy element z początku (nie modyfikujemy pozostałych zmiennych) return wektor[poczatek % wektor.length]; } // metoda zwraca rozmiar kolejki (liczbę elementów w kolejce) public int rozmiar() { return rozmiarKolejki; } // metoda wyświetla wszystkie elementy w kolejce public void wyswietl(){ // w pętli od początku do rozmiaru kolejki // (również wykorzystujemy modulo) for (int i = poczatek % wektor.length; i < poczatek % wektor.length + rozmiarKolejki; i++) // wyświetlamy poszczególne elementy System.out.print (wektor[ i % wektor.length] + " "); System.out.println (); } }
/** * Test kolejki liczb całkowitych * @author kodatnik.blogspot.com */ public class TestKolejki { public static void main(String args[]) { // zakładamy nową kolejkę o rozmiarze 20 Kolejka k = new Kolejka(20); // dodajemy elementy do kolejki k.dodaj(12); k.dodaj(8); k.dodaj(39); // wyświetlamy zawartość kolejki k.wyswietl(); // wyświetlamy element znajdujący się na początku (bez jego usuwania) System.out.println(k.zobacz()); // usuwamy element z kolejki k.usun(); // wyświetlamy zawartość kolejki k.wyswietl(); } }Uruchomiona aplikacja:
12 8 39 12 8 39Przedstawiona kolejka jest statyczna, jej rozmiar ustalamy podczas tworzenia obiektu (nie mamy możliwości jego zmiany w trakcie działania). Przechowujemy dane tylko jednego typu (int), co w większości zastosowań może okazać się niewystarczające. Lepszym rozwiązaniem jest zastosowanie do implementacji kolejki list powiązanych (struktura dynamiczna) oraz wykorzystanie typów generycznych (możliwość tworzenia kolejek przechowujących dowolny typ danych).
Kolejki wykorzystywane są w algorytmice, w programach komputerowych (np. kolejka plików w Winampie), systemach operacyjnych (np. kolejka wydruku).
1 Komentarz - Kolejka - implementacja tablicowa
duzo wiedzy
Prześlij komentarz
Możesz użyć niektórych tagów HTML, takich jak <b>, <i>, <u>, <a> Nie spamuj :)