.


:




:

































 

 

 

 


16 :




:

: TURBO PASCAL 7.1

: ,

: 2 .

 

:

1. .. Turbo Pascal. . 2- . .: , 2007. . 138-149.

2. .. . . . .: , 2008. . 130-152.

:

1. .

2. .

3. .

.

(, )

3 . , . , , . . , , . . :

Type

Text = < >;

AdrT = ^Text;

AdrZv = ^Zveno;

Zveno = record

K1: < >;

Lev, Prav: AdrZv;

Ard: ArdT;

End;

Var

DvDer: AdrZv;

 

1. .

2. , , .

3. , , .

4. , , , .

5. .

 

, . . , , , nil.

.

(* , *)

var

Zap: Text;

S: AdrZv;

T: AdrT;

Q, Root: AdrZv;

K: Integer;

Begin

New(T);

T^:= Zap;

New(S);

S^.K1:= K;

S^.AdrT:= T;

S.Lev:= nil;

L^.Prav:= nil;

If Root = nil then Root:= S

Else if K < Q^.K1 then Q^.Lev:= S else Q^.Prav:= S

 

, , -. , , . :

1. ( ). , , <> nil.

2. ( ). , , <> nil.

 

:

1. .

2. .

3. .

.

(* 1. : D , K - *)

procedure UDDer(Var D: AdrZv; K: Integer);

var Q: AdrZv;

procedure UD(Var R: AdrZv); { ; R }

begin

if R^.Prav = nil then { }

begin

Q^.K1:= R^.K1; {R ; Q }

Q^.Adr:= R^.Adr; { }

Q:= R;

R:= Q^.Lev; { Prav - Lev }

End

Else

UD(R^.Prav);

end;

begin

if D = nil then

Writeln( )

Else

If K < D^.Kl then

UDDer(D^.Lev, K)

Else

If K > D^.K1 then

UDDer(D^.Prav, K)

Else

Begin

Q:= D; { Q }

If Q^.Prav = nil then

D:= Q^.Lev {*} { }

Else

If Q^.Lev = nil then

D:= Q^.Prav {**} { }

Else

UD(Q^.Lev); {***}

End;

end;

(*)

Begin

D:= Q^.Lev;

Dispose(Q);

End

(**)

(***)

Dispose(Q);

 

. . , . : .

type

Adr = ^Zveno;

Zveno = record

AdrSled: Adr;

Element: Char;

end;

.


. 2 : . :

type

Adr2 = ^Zveno2

Zveno2 = record

AdrSled: Adr2;

AdrPred: Adr2;

Element: < >;

end;

: , 15.

1 ― , .
2 ― , .
3 ― , .
4 ― .
5 ― .
6 ― .
7 ― .
8 ― , , .
9 ― , , .
10 ― , .
11 ― , .
12 ― .
13 ― .
14 ― , , .
15 ― , , .
16 ― .
17 ― .
18 ― .

:

1. .

2. .

3. .

4. .

5. .

, , . .






:


: 2016-10-06; !; : 513 |


:

:

, .
==> ...

1443 - | 1382 -


© 2015-2024 lektsii.org - -

: 0.021 .