ALG5

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

II coś jest w kolejce


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]<tab
ALG 5 5.1 Listy jednokierunkowe 95 w tej książce dla uproszczenia operuje się głównie wartościami ty
ALG 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(int
Sheetl Rys unek public class Rysunek { int liczbaFigur = 0; FiguraO figury; public Rysunek(int
15 Wyższa Szkoła Bankowa Public Relations Forma działań O Identyfikacja
rozliczanie 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, int
class 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 gruntow
ALG5 1.4. Poziomy abstrakcji opisu i wybór języka 25 Zdając sobie sprawę, że C H- może być pewnej g
ALG5 35 2.4. Niebezpieczeństwa rekurencji2.4.1.Ciąg Fibonacciego Naszym pierwszym zadaniem jest nap
ALG5 2.7. Myślenie rekurencyjne 45 Przypadkiem elementarnym będzie tutaj narysowanie jednej pary kw
ALG5 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 jest

więcej podobnych podstron