38.

, -

, .

 

LIFO (Last-In, First-Out) -

 

, .

:

- ( );

- ;

- ().

-

, ,

- . :

 

var pTop, pAux: Pointer;

 

pTop - ;

pAux - .

:

 

ͻͻ

New(pTop);*ĺĿ

ͼͺ

pTop>

ͼ

 

ͻͻ

pTop^.pNext:=NIL;*ĺĿ

ͼͺ

pTop> NIL

ͼ

 

ͻͻ

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

ͼͺ

pTop> NIL

ͼ

 

.

-

:

ͻͻͻ

New(pAux);*ĺĿ ĺ*

ͼͺ ͼ

pTop <pAux

ͼ

ͻ

D1

ͺ

> NIL

ͼ

 

 

ͻͻͻ

pAux^.pNext:=pTop; *ĺĿ ĺ*

ͼͺ< ͼ

pTop *ĺĿpAux

ͼ

ͻ

D1

ͺ

> NIL <

ͼ

 

 

ͻͻͻ

pTop:=pAux;*ĺĿ ĺ*

ͼͺ< ͼ

pTop>*ĺĿ pAux

ͼ

ͻ

D1

ͺ

NIL <

ͼ

 

ͻͻ

pTop^.D:=D2;*ĺĿ D2

ͼͺ

pTop>*ĺĿ

ͼ

ͻ

D1

ͺ

NIL <

ͼ

 

.

. -

:

ͻͻ

*ĺĿ D3

ͼ ͺ

pTop>*--Ŀ

ͼ

ͻ

D2

ͺ

ĺ*<

ͼ

ͻ

D1

ͺ

> NIL

ͼ

 

- . -

:

 

ͻͻ

D3:=pTop^.D;*ĺĿ D3

pTop:=pTop^.pNext;ͼͺ

pTop

ͼ

ͻ

D2

ͺ

>*ĺĿ

ͼ

ͻ

D1

ͺ

NIL <

ͼ

 

, .

 

. , ,

,

, -

. - , -

END.

Program STACK;

uses Crt;

type

Alfa= String[10];

PComp= ^Comp;

Comp= Record

sD: Alfa;

pNext: PComp

end;

var

pTop: PComp;

sC: Alfa;

Procedure CreateStack(var pTop: PComp; var sC: Alfa);

begin

New(pTop);

pTop^.pNext:=NIL;

pTop^.sD:=sC

end;

Procedure AddComp(var pTop: PComp; var sC: Alfa);

var pAux: PComp;

begin

NEW(pAux);

pAux^.pNext:=pTop;

pTop:=pAux;

pTop^.sD:=sC

end;

Procedure DelComp(var pTop: PComp; var sC:ALFA);

begin

sC:=pTop^.sD;

pTop:=pTop^.pNext

end;

begin

Clrscr;

writeln(' ');

readln(sC);

CreateStack(pTop,sC);

repeat

writeln(' ');

readln(sC);

AddComp(pTop,sC)

until sC='END';

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

repeat

DelComp(pTop,sC);

writeln(sC);

until pTop = NIL

end.

, , ,