39.

, -

,

. :

 

FIFO (First-In, First-Out) -

 

, .

-

, ,

- , - .

-

:

type

PComp=^Comp;

Comp=record

D:T;

pNext:PComp

end;

var

pBegin, pEnd, pAux: PComp;

 

pBegin - , pEnd - -

, pAux - .

.

:

 

 

ͻͻͻ

New(pBegin);*ĺĿ

ͼͺͼ

pBegin>pEnd

ͼ

 

 

ͻͻͻ

pBegin^.pNext:=NIL;*ĺĿ

ͼͺ ͼ

pBegin> NIL pEnd

ͼ

 

 

ͻͻͻ

pBegin^.D:=D1;*ĺĿ D1

ͼͺ ͼ

pBegin> NIL pEnd

ͼ

 

 

ͻͻͻ

pEnd:=pBegin;*ĺĿ D1 ĺ*

ͼͺ ͼ

pBegin> NIL <pEnd

ͼ

 

 

:

 

New(pAux);

ͻͻͻͻ ͻ

*ĺĿ D1ĺ* ĺ*

ͼͺ ͼͺͼ

pBegin> NIL <pEnd<pAux

ͼͼ

 

pAux^.pNext:=NIL;

ͻͻͻͻ ͻ

*ĺĿ D1ĺ* ĺ*

ͼͺ ͼͺͼ

pBegin> NIL <pEnd NIL <pAux

ͼͼ

pBegin^.pNext:=pAux;

ͻͻͻͻ ͻ

*ĺĿ D1ĺ* ĺ*

ͼͺ ͼͺͼ

pBegin>* <pEnd NIL <pAux

ͼͼ

^

pEnd:=pAux;

 

ͻͻͻͻ ͻ

*ĺĿ D1*ĺĿ ĺ*

ͼͺ ͼͺ ͼ

pBegin>* pEnd> NIL < pAux

ͼͼ

^

 

pEnd^.D:=D2;

ͻͻͻͻ

*ĺĿ D1 D2ĺ*

ͼͺ ͺͼ

pBegin>*ĺ> NIL <pEnd

ͼͼ

 

 

.

,

.

, :

 

 

ͻͻͻͻ ͻ

*ĺĿ D1 D2 D3 ĺ*

ͼͺ ͺͺͼ

pBegin>*ĺ> *ĺ> NIL <pEnd

ͼͼͼ

 

:

 

D1:=pBegin^.D;

pBegin:=pBegin^.pNext;

ͻͻͻ ͻͻ

*ĺĿ D1 D2 D3 ĺ*

ͼͺ ͺͺͼ

pBegin >*ĺ> NIL <pEnd

ͼ ͼͼ

. , ,

, -

. -

. - , -

END.

 

Program QUEUE;

uses Crt;

type

Alfa= String[10];

PComp= ^Comp;

Comp= record

sD:Alfa;

pNext:PComp

end;

var

pBegin, pEnd: PComp;

sC: Alfa;

Procedure CreateQueue(var pBegin,pEnd: PComp; var sC: Alfa);

begin

New(pBegin);

pBegin^.pNext:=NIL;

pBegin^.sD:=sC;

pEnd:=pBegin

end;

Procedure AddQueue(var pEnd:PComp; var sC:Alfa);

var pAux: PComp;

begin

New(pAux);

pAux^.pNext:=NIL;

pEnd^.pNext:=pAux;

pEnd:=pAux;

pEnd^.sD:=sC

end;

Procedure DelQueue(var pBegin: PComp; var sC: Alfa);

begin

sC:=pBegin^.sD;

pBegin:=pBegin^.pNext

end;

begin

Clrscr;

writeln(' ');

readln(sC);

CreateQueue(pBegin,pEnd,sC);

repeat

writeln(' ');

readln(sC);

AddQueue(pEnd,sC)

until sC='END';

writeln(' ***** *****');

repeat

DelQueue(pBegin,sC);

writeln(sC);

until pBegin=NIL

end.

, , ,