.


:




:

































 

 

 

 


. 5

36. ( ) - , - . . , , . - , - . (heap - ). . - . TURBO PASCAL New, Dispose, GetMem, FreeMem, Mark,Release, MaxAvail, MemAvail, SizeOf. New(var p: Pointer) - p^ p. Dispose(var p: Pointer) , New, p . GetMem(var p: Pointer; size: Word) heap - , p, size. FreeMem(var p: Pointer; size: Word) - , p, - size. p . Mark(var p: Pointer) p . Release(var p: Pointer) - , , p Mark, -, , Mark. MaxAvail: Longint - . MemAvail: Longint - . SizeOf(X): Word -, X, X , . . var p1, p2: ^Integer; p1 p2 - . p1:=NIL; p2:=NIL; p1 p2 . New(p1); New(p2); New(p1) : - ; - p1: ===== ===== *-----------> L=====- L=====- p1 p1^ , New(p2) , p2: ===== ===== *-----------> L=====- L=====- p2 p2^ p1^:=2; p2^:=4; 2 4 -: ===== ===== *-----------> 2 L=====- L=====- p1 p1^ ===== ===== *-----------> 4 L=====- L=====- p2 p2^ p1^:=p2^; , p1, 4: ===== ===== *-----------> 4 L=====- L=====- p1 p1^ ===== ===== *-----------> 4 L=====- L=====- p2 p2^ p2:=p1; : ===== ===== *-----------> 4 L=====- --->L=====- p1 p1^ p2^ ===== *--------- L=====- p2 p1^, p2^ , New. , -: p1^:=p1^+8; Write('p1^=',p1^:3); . : Program DemoPointer; var p1,p2,p3:^Integer; begin p1:=NIL; p2:=NIL; p3:=NIL; New(p1); New(p2); New(p3); p1^:=2; p2^:=4; p3^:=p1^+Sqr(p2^); writeln('p1^=',p1^:3,' p2^=',p2^:3,' p3^=',p3^:3); p1:=p2; writeln('p1^=',p1^:3,' p2^=',p2^:3) end. : p1^= 2 p2^= 4 p3^= 18p1^= 4 p2^= 4 37. , , , , -, , . , . , , , , . - , -. , : -, - . , . , , . -: ===== D ===== p L=====- p - ; D - . : type Pointer = ^Comp; Comp = record D:T; pNext:Pointer end; T - . , , . 38. , - , . LIFO (Last-In, First-Out) - , . : - ( ); - ; - (). - , , - . : var pTop, pAux: Pointer; pTop - ; pAux - . : ===== ===== New(pTop); *----- L=====- ===== pTop L--> L=====- ===== ===== pTop^.pNext:=NIL; *----- L=====- ===== pTop L--> NIL L=====- ===== ===== pTop^.D:=D1; *----- D1 L=====- ===== pTop L--> NIL L=====- . - : ===== ===== ===== New(pAux); *----- ------* L=====- ===== L=====- pTop <--- pAux L=====- ===== D1 ===== L--> NIL L=====- ===== ===== ===== pAux^.pNext:=pTop; *----- ------* L=====- =====<--- L=====- pTop *--- pAux L=====- ===== D1 ===== L--> NIL <- L=====- ===== ===== ===== pTop:=pAux; *----- ------* L=====- =====<--- L=====- pTop L--> *--- pAux L=====- ===== D1 ===== NIL <- L=====- ===== ===== pTop^.D:=D2; *----- D2 L=====- ===== pTop L--> *--- L=====- ===== D1 ===== NIL <- L=====- . . - : ===== ===== *----- D3 L=====- ===== pTop L--> *--- L=====- ===== D2 ===== ----* <- L=====- ===== D1 ===== L> NIL L=====- - . - : ===== ===== D3:=pTop^.D; *----- D3 pTop:=pTop^.pNext; L=====- ===== pTop L=====- ===== D2 ===== L--> *--- L=====- ===== D1 ===== NIL <- L=====- , . . , , , , -. - , - 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. 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); *----- L=====- ===== L=====- pBegin L--> pEnd L=====- ===== ===== ===== pBegin^.pNext:=NIL; *----- L=====- ===== L=====- pBegin L--> NIL pEnd L=====- ===== ===== ===== pBegin^.D:=D1; *----- D1 L=====- ===== L=====- pBegin L--> NIL pEnd L=====- ===== ===== ===== pEnd:=pBegin; *----- D1 ------* L=====- ===== L=====- pBegin L--> NIL <--- pEnd L=====- : New(pAux); ===== ===== ===== ===== ===== *----- D1 ------* ------* L=====- ===== L=====- ===== L=====-pBegin L--> NIL <--- pEnd <--- pAux L=====- L=====- pAux^.pNext:=NIL; ===== ===== ===== ===== ===== *----- D1 ------* ------* L=====- ===== L=====- ===== L=====-pBegin L--> NIL <--- pEnd NIL <--- pAux L=====- L=====- pBegin^.pNext:=pAux; ===== ===== ===== ===== ===== *----- D1 ------* ------* L=====- ===== L=====- ===== L=====-pBegin L--> * <--- pEnd NIL <--- pAux L=====- L=====- ^ L---------------------------- pEnd:=pAux; ===== ===== ===== ===== ===== *----- D1 *----- ------* L=====- ===== L=====- ===== L=====-pBegin L--> * pEnd L--> NIL <--- pAux L=====- L=====- ^ L---------------------------- pEnd^.D:=D2; ===== ===== ===== ===== *----- D1 D2 ------* L=====- ===== ===== L=====-pBegin L--> *----------------------> NIL <--- pEnd L=====- L=====- . , . , : ===== ===== ===== ===== ===== *----- D1 D2 D3 ------* L=====- ===== ===== ===== L=====-pBegin L--> *--------> *--------> NIL <--- pEnd L=====- L=====- L=====- : D1:=pBegin^.D; pBegin:=pBegin^.pNext; ===== ===== ===== ===== ===== *----- D1 D2 D3 ------* L=====- ===== ===== ===== L=====-pBegin ---> *--------> NIL <--- pEnd L=====- L=====- L=====- L-------------- . , , , - . -. - , - 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.

 



<== | ==>
? | ( ..., . .. ).
:


: 2016-12-31; !; : 275 |


:

:

.
==> ...

1470 - | 1400 -


© 2015-2024 lektsii.org - -

: 0.009 .