ALG5
5.4. Kolejki FIFO 135
public:
FIFO(int n)
(
II konstruktor kolejki o rozmiarze n
HaxElt=n;
glowa=ogon=fl;
t-new TypPodst[MaxElt>l]; II przydział pamięci
)
void wstaw(TypPodst x)
<
II wstawia nowy element X do kolejki t[ogon++]=x; if(ogon>MaxElt) ogon-0;
)
int obsłuż(TypPodst sw)
(
// obsługuje 1-go klienta z kolejki if (qlowa==ogon) // kolejka pusta return -1; II informacja o biedzie operacji
w=t[glowa+t]; if(glowa>MaxElt! glowa-0;
return 1; II sukces operacji
>
int pusta() // czy kolejka jest pusta?
(
if (glowa==ogon)
return 1; II kolejka pusta
else
return 0;
)
) i
Podobnie jak w przypadku stosu, zdefiniowaliśmy nowy typ danych w postaci klasy szablonowej. Umożliwia to łatwe definiowanie rozmaitych Kolejek obsługujących różnorodne typy danych. Definicja klasy FIFO me jest kompletna: brakuje w niej na przykład jawnego destruktora, ponadto kontrola operacji mogłaby być nieco bardziej rozbudowana... Te „dodatki” są jednak pozostawione Czytelnikowi jako proste ćwiczenie programistyczne.
Popatrzmy, jak wygląda korzystanie w praktyce z nowej struktury danych
kolejka, cpp
iinclude <iostream.h>
(tinclude "kolejka.h"
static char *tab[]=
{"Kowalska ","Fronczak","Becki","Pigwa"(; void mainO (
FIFO<char*> kolejka(5); II kolejka 5-osobowa
Wyszukiwarka
Podobne podstrony:
Wykorzystanie zmiennych warunku* procedura producenta void *produkuj( void *q){ zasób *fifo; int i;Wykorzystanie zmiennych warunku+ procedura konsumenta void *konsumuj( void *q){ zasób *fifo; int i,ALG5 4.2. Sortowanie bąbelkowe, algorytm klasy 0(H2) 85 for (int j-n-l;j>i;j—) if (tab[j]<tabALG 5 5.1 Listy jednokierunkowe 95 w tej książce dla uproszczenia operuje się głównie wartościami tyALG 7 5.1. Listy jednokierunkowe 97 public: int pusta() // czy lista jest pusta? {Argumenty domyślne Wartość wstawiana, gdy nie dostarczono argumentu. class Point { public: Point(intSheetl Rys unek public class Rysunek { int liczbaFigur = 0; FiguraO figury; public Rysunek(int15 Wyższa Szkoła Bankowa Public Relations Forma działań O Identyfikacjarozliczanie wynagrodzei •5 ROZLICZANIE WYNAGRODZEŃ I DANIN PUBLICZNYCH DOKUMENTACJA{ class Punkt { public int x, y; public void Przesuń(int dx, int dy) { public Punkt(int x, intclass Punkt{ private int x, y; public void Przesuń(int dx, int dy){ x += dx; y += dy;} public Punkt(class Punkt{ priyate int x, y; public void Przesuń(int dx, int dy){ x += dx; y += dy;} public Punkt(3 (366) 6 class B { public: virtual void f() {.......}}; class D : public B{ public: void f() {.....ALG5 Przedmowa 15Uwagi do wydania 2 W bieżącej edycji książki, wraz z całym tekstem zostały gruntowALG5 1.4. Poziomy abstrakcji opisu i wybór języka 25 Zdając sobie sprawę, że C H- może być pewnej gALG5 35 2.4. Niebezpieczeństwa rekurencji2.4.1.Ciąg Fibonacciego Naszym pierwszym zadaniem jest napALG5 2.7. Myślenie rekurencyjne 45 Przypadkiem elementarnym będzie tutaj narysowanie jednej pary kwALG5 3.1. Dobre samopoczucie użytkownika programu 55 Wcale nie jest aż tak dobrze z szybkością wspóALG5 3.4. Przykład 3: Wpadamy w pułapkę 657«)-/t(l + N + Nt[i]). T{n) ~ max(A AV[/]). Początek jestwięcej podobnych podstron