obsługa listy

PACKAGE Sznury IS

TYPE Elem IS PRIVATE;

TYPE Sznur IS PRIVATE;

PROCEDURE Wypisz (S : IN OUT Sznur);

PROCEDURE Wpisz (S : IN OUT Sznur;X : IN Integer);

PROCEDURE Usuncodrugi (S : IN OUT Sznur;N : Integer);

PRIVATE

TYPE Wsk IS ACCESS Elem;

TYPE Elem IS RECORD

Dane : Integer;

Nast : Wsk;

END RECORD;

TYPE Sznur IS RECORD

Pocz : Wsk := NULL;

Kon : Wsk := NULL;

END RECORD;

END Sznury;

PROCEDURE Free IS

NEW Ada.Unchecked_Deallocation(Elem,Wsk);

PROCEDURE Wypisz (S : IN OUT Sznur) IS

Pom : Wsk := S.Pocz;

BEGIN

Put("Poczatek");

WHILE Pom/=NULL LOOP

Put(" -> ");

Put(Pom.Dane,0);

Pom:=Pom.Nast;

END LOOP;

Put(" -> Koniec");

New_Line;

END Wypisz;

PROCEDURE Wpisz (S : IN OUT Sznur;X : IN Integer) IS

BEGIN

IF S.Pocz=NULL THEN

S.Pocz:=NEW Elem'(X,NULL);

S.Kon:=S.Pocz;

ELSE

S.Kon.Nast:=NEW Elem'(X,NULL);

S.Kon:=S.Kon.Nast;

END IF;

END Wpisz;

PROCEDURE Usuncodrugi (S : IN OUT Sznur;N : Integer) IS

Pom,Killer : Wsk;

I : Integer := 1;

BEGIN

IF S.Pocz/=NULL THEN

Pom:=S.Pocz;

IF N=1 THEN

Killer:=S.Pocz;

S.Pocz:=S.Pocz.Nast;

Free(Killer);

Pom:=S.Pocz;

ELSE

WHILE Pom/=NULL AND I<N-1 LOOP

I:=I+1;

Pom:=Pom.Nast;

END LOOP;

END IF;

WHILE Pom/=NULL AND THEN Pom.Nast/=NULL LOOP

Killer:=Pom.Nast;

Pom.Nast:=Pom.Nast.Nast;

Free(Killer);

Pom:=Pom.Nast;

END LOOP;

END IF;

END Usuncodrugi;

PROCEDURE Usun (L : IN OUT Lista; V : Integer) IS

Pred : Node_Pointer := NULL;

Succ : Node_Pointer := L.Head;

P : Node_Pointer;

BEGIN

WHILE Succ /= NULL AND THEN V /= Succ.Value LOOP

Pred := Succ;

Succ := Succ.Next;

END LOOP;

WHILE Succ /= NULL AND THEN Succ.Value = V LOOP

P := Succ;

Succ := Succ.Next;

IF Pred = NULL THEN

L.Head := Succ;

ELSE

Pred.Next := Succ;

END IF;

Free(P);

END LOOP;

END Usun;


Wyszukiwarka

Podobne podstrony:
Obsługa listy w C
obsluga klienta 1
Użytkowanie, Obsługiwanie i Kierowanie Eksploatacją
Obsługa interesantów
Piec LSL UB Instrukcja obsługi
Logistyczna obsługa klienta Kempny
listy zadan, rach3
Instrukcja obslugi Uchwyt samoc Nieznany
INSTRUKCJA OBSŁUGI DEKODER SAGEM ISD 4285 PL
Perswazyjny telemarketing 50 narzedzi sprzedazy i obslugi klienta przez telefon do zastosowania od z
Instrukcja obsługi interfejs KKL OPEL, BMW, VAG
Instrukcja obsługi Farymann 15D 18D
05 obslugiwanie statkow powietrznych systemy i organizacja obslug technicznych statkow powietrznych
Instrukcja obslugi wymiennikow CB alfa laval

więcej podobnych podstron