Professional Documents
Culture Documents
E
'
I X
.
K B E
ATPA 2000
HPOOPIKH
E
'
IANNH XATZHYEPOYH
. , K B E
EIA KEPAYNOY
K T K
ANAITH INTEA
T M
EPAIMO KOYTOYPAKH
IANNH EOIA
...
TYPORAMA
YIA AOTOAKH
/ 19971999
ISBN: 9605380641
K : H 10/3
Copyright 2000
& , 26222 : (0610) 314094, 314206 : (0610) 317244
. 2121/1993,
.
.............................................................................................................................................. 9
K 1
, ,
E ................................................................................................... 11
1.1
O
1.1.1
...............................................................
13
1.1.2 T
................................................................
14
1.1.3 A ............................................................ 17
1.1.4 K ........................................................... 19
1.1.5 Y
1.2
..........................................................
20
A
1.2.1 E ................................................................................... 22
1.2.2 ......................................................................... 23
1.3
1.3.1 H ............................................................. 30
1.3.2 .............................................................. 31
...................................................................................................................... 34
........................................
35
K 2
, ,
E .................................................................................................. 37
2.1
2.1.1 M .......................................................................... 39
2.1.2 A ..................................... 41
2.1.3 ................................................................................. 44
2.1.4 A .......................................... 45
2.1.5 ............................................................................ 48
EPIEXOMENA
2.1.6 E ............................................................................................... 49
2.2
A
2.2.1 A ............................................................................... 53
2.2.2 ..................................................................................... 56
2.3
E
2.3.1 O ................................................................ 59
2.3.2
......................................................................................
63
...................................................................................................................... 64
........................................
65
K 3
, ,
E .................................................................................................. 67
3.1
O,
3.1.1 ......................................................................... 69
3.1.2 A ........................................... 71
3.1.3 A ........................................ 73
3.2.
3.2.1
..........................................................................................................
76
3.2.2 E
............................................................................................................
77
3.2.3
.............................................................................................................
79
3.2.4 A .......................................................................................................... 79
3.3.
3.3.1
..........................................................................................................
82
3.3.2 E
............................................................................................................
83
3.3.3
.............................................................................................................
84
3.3.4 A
.........................................................................................................
87
3.4.
3.4.1
.....................................................................
89
3.4.2 K ................................................................ 89
3.4.3 ...................................................... 90
EPIEXOMENA
...................................................................................................................... 90
........................................
91
K 4
, ,
E .................................................................................................. 93
4.1
4.1.1 O
..............................................................
95
4.1.2 ....................................................................................... 96
4.2. E
4.2.1 K ................................................................ 100
4.2.2 E
4.3
..........................................
102
...........................................................
104
........................................................................................
105
O
4.3.1 O
4.3.2
4.4
E
4.4.1 K ................................................................................................ 110
4.4.2
......................................................................................................
111
.....................................
113
K 5
, ,
E ................................................................................................ 115
5.1
.......................................................................... 117
5.2
5.2.1 O
............................................................
119
EPIEXOMENA
5.3
5.3.1 O .............................................................................................................. 126
5.3.2 A
......................................................................................................
127
-
5.4.1 O ............................................................. 138
5.4.2 E ........................................................................................................... 139
5.4.3 ........................................................................................................... 141
5.5
5.5.1 Y ............................................................................ 145
5.5.2 B .......................................................................... 146
................................................................................................................... 146
.....................................
148
K 6
, ,
E ............................................................................................... 149
6.1
E .............................................................................................. 150
6.2
..................................................................................................... 152
6.3
..................................................................................................... 156
6.4
........................................................................................................... 166
................................................................................................................... 170
.....................................
171
.........................................................
173
............................................................
209
........................................................................................................................
213
..............................................................................................................................
221
A
B
... ,
.
, .
,
.
.
/. ,
/,
. ,
: ,
/, . ,
, .
,
.
, , ,
. , .
. , . ,
,
-
POOO
10
. , ,
. ,
, ,
, . , , .
, .
1 , , .
2 , .
3 ,
, 4
, . 5
, , . , 6 , .
, , . .
. ,
. ,
.
.
1999
, ,
.
, :
,
,
,
,
.
KEAAIO 1: EIAH
12
.
1
1.1
1.2
1.3
, , , , , , .
,
H/Y.
.
() .
,
.
.
, ( )
.
,
,
.
. , -
13
,
.
.
, ,
Pascal C.
Pascal C
Pascal C.
, .
1.1
1.1.1
(H/Y).
,
, ,
H/Y. () , ,
,
, .
,
() .
(data).
(variables). ,
, .
H/Y. (
1.1.5 ).
T
.
KEAAIO 1: EIAH
14
1.1
-
, , , , . ,
SPACE LOCATION.
() .
SPACE ( )
. .
LOCATION
, , x y.
, ()
, .
1.1.2
,
, .
. , (data type)
,
(domain) , , (operations)[1].
)
() )
().
. (atomic types)
,
. .
SPACE 1.1.
: (integer),
(real), (boolean), (character).
[1]
.
15
Pascal
Pascal .
( ) .
1.2
integer
()
[-maxint, maxint],
maxint
[2].
[3] (:=)
(+, -, *, div,)
(=, <>, <, >,...)
boolean
()
(false, true)
(:=)
(and, or, not)
[2]
, H/Y (..
H/Y, H/Y). .. Turbo Pascal Pascal H/Y.
[3] .
[4] Pascal Pascal
.
KEAAIO 1: EIAH
16
)
,
( ),
)
( )
/ .
1.3
H/Y. (
H/Y 1.1.5
). / . (data structures).
/
(size) .
.
Pascal
(array)
.
[5] . LOCATION
1.1 , ,
(x) (y)
.
Pascal :
type vec = array [1..2] of real ;
var LOCATION : vec ;
(type)
vec, (=) (array) ([1..2]) (real)[6].
LOCATION vec,
.
[5] .
.
[6] ()
, .
(instances)
. , , ,
, .
vec, LOCATION,
( ), ,
,
H/Y.
Pascal
:
(access) (.. LOCATION[2]): ( 2 ) (LOCATION),
(.. SPACE:=
LOCATION[2]).
(retrieval) . 2
. [],
, .
(assignment) (.. LOCATION[2] :=
SPACE, LOCATION[1] := 2.5): ( ) (SPACE)
(2.5) .
, (update) .
1.1.3
,
.
, , ,
.
( ) .
.
(abstract data type) (ADT).
( ) .
17
KEAAIO 1: EIAH
18
H/Y. ..
H/Y.
( 1.2) Pascal
[-maxint, maxint], maxint
, H/Y
, (-, ) .
, . ( 1.1.5
, 1.3 ).
,
.
,
. , ,
, ,
.
, ,
. ,
.
1.1
1.1.2
,
.
; .
.
1.1.4
: , , (, ), (, ) . ,
. ( ) , , .
.
(fundamental
structures). ,
,
(static structures).
, , (higher-level structures).
, ,
(dynamic structures).
(, , ) .
(linear) (non-linear).
.
, --
. 1.1 , /
.. . ,
-- -- -
19
KEAAIO 1: EIAH
20
. 1.1
, .
( --) .. .
,
.
/
n0
...
n1
1.1
()
() ()
.
n2
nm
n1
n2
n3
()
...
...
()
1.1.5
,
. .
H/Y,
. H/Y, / H/Y
. .
H/Y, (main
memory) . H/Y
(memory cells).
(address), . ,
.
(word) H/Y. , ,
H/Y () 1 byte, 8
21
KEAAIO 1: EIAH
22
(Pascal, C ), , .
1.1
.
() .
() .
1.2
1.2.1 E
, H/Y, .
.
( .. ).
, ,
.
.
.
1.2 AOPIMIKH A
23
Pascal ()
C. . H
.
1.2.2
.
:
n
.
:
.
.
,
,
... .
.
,
.
, 1.1.
,
1.1.
,
, . .
1.4
KEAAIO 1: EIAH
24
: () () ,
.
: (X) (MIN) .
MINSTOIXEIO(A, N)
1 K 1, X 1, MIN A[1]
2 while K N
3
if M > A[K]
4
then X K, MIN A[K]
endif
5
KK+1
endwhile
6 print X, MIN
{ .}
{ }
{ }
{ }
{ }
{ }
(MINSTOIXEIO)
(A, N), ,
. () (1-6)
, .
.
, ( 5)
( 2, 3) ( 6).
, (..
1, 4). ,
.
, -
1.2 AOPIMIKH A
.
. (
).
(..
{ } 1 1.1).
. .
,
print ,
,
() ( 6).
(MIN, , ).
,
.
,
, , .. [1] ( 1),
[] ( 3, 4).
,
.
, .
( ), (TRUE, FALSE)
(.. ).
(, -
25
KEAAIO 1: EIAH
26
) :
(+, -, *, /, , ), (<, , =,
, , >) (and, or, not).
( 5 ),
( 2, 3) (.. (A > 1) and (B 0))
. ,
.
) (
( ) :
<> <>
<> (.. 5 ) . (
).
. :
( ) .
, , ( 4, 3-5)
(endif, endwhile).
, .
if
:
if <>
then < >
[else < >]
endif
1.2 AOPIMIKH A
27
<> (
.. 3) . <
> < > .
else (.. if
1.1 ). endif
if .
: < >, <
>, . .
, > [] ( 3)
, 4 ( , []
, ) 5 ( ),
5.
< > if, if ...,
if,
,
.
while
:
while <>
< >
endwhile
: E <>
< >, ,
.
, . < > ,
KEAAIO 1: EIAH
28
. endwhile
. .. 1.1, <>
( 2) if ( 3-4) ( 5). , . , ( 5),
.
.
, for,
( ) . , while. ,
. ,
for <> < > to < >
< >
endfor
<> . < >, <
>
. endfor
.
: O
< > (1).
< >, .
< >, . .
for while 1.1 1.4 .
1.2 AOPIMIKH A
29
MINSTOIXEIO(A, N)
1 X 1, MIN A[1]
2 for K 1 to N
3
if M > A[K]
4
then X K, MIN A[K]
endif
endfor
5 print X, MIN .
{ }
{ }
{ }
{ }
{ }
if
. ,
for while .
.
. () ,
(function) (procedure).
, (..
, )
.
:
n .
:
.
...
.
.
1.2
KEAAIO 1: EIAH
30
.
. .
1.3
, .
.
, .
.
1.3.1
, .
. .
,
.
. , .
, .
,
.
) , )
) H/Y
.
.
, ,
(basic operations) . , -
1 . 3 O Y O K O T H TA A O P I M N
, . . . ..
,
. , , .
. .. ,
.
1.3.2
f(n), n / .
f(n) .
f(n) :
() : f(n)
() : f(n)
() : f(n).
f(n)
,
.
,
,
. ,
.
31
KEAAIO 1: EIAH
32
1.5
1.1 f(n)
, () , X MIN.
,
, n-1, .
()
. X MIN (
1), f(n) = 2.
()
,
3, ,
X MIN. n ,
n - 1 X MIN,
, . f(n) = 2 (n - 1) + 2 f(n) = 2 n.
() , 1, 2
3 ,
.
,
3!=6 .
:
: 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 21
:
( ),
:
f (3 ) =
0 + 0 + 2 + 2 + 2 + 4 10
=
6
6
n . O
1 . 3 O Y O K O T H TA A O P I M N
33
1.2
.
.
, (big-), :
f (n ) = O ( g (n )) ,
g(n) , ..
f(n) = (1), f(n) = (nlogn), f(n) = O(n2). 1.2,
logn (log2n) n,
( ).
, n = 1024.
logn = 10, n logn = 1024 10 = 10.240, n2 1.000.000
n3 1.000.000.000.
M
1 logn
n nlogn n
M
1.2
`.
f(n)
.
.
,
n .
1.3
KEAAIO 1: EIAH
34
1.6
n(n +1)
2
. -
() f(n ) =
f(n) : f(n) = () n2 + () n.
() n2 = n2/2 : f(n) = O(n2).
() f(n ) =
8 logn + 4n
,
3n2 log n
f(n ) =
8 logn
4n
+ 2
2
3n log n 3n log n
f(n ) =
8 logn
4n
+ 2
.
2
3n log n 3n log n
1
).
nlogn
1.4
:
) f(n) = 5 n logn + 0.5 n2 + 10
) f(n) =
3n + 5 log n + 1
2n
, ,
. (.. )
(.. ).
. O
YNOH
35
.
() ,
.
() .
( ) .
,
- (, ) - (, ). ,
(, ) (, ).
O
. ,
.
, . .
.
.
:
1. M. Main and W. Savitch, Data Structures and Other Objects,
Benjamin/Cummings, 1995.
1.2
36
KEAAIO 1: EIAH
,
10.1 .
2. C. A. Shaffer, A Practical Introduction to Data Structures and
Algorithm Analysis, Prentice Hall, 1997.
3 ,
. ,
, .
. ,
.
3. T. A. Standish, Data Structures, Algorithms and Software Principles,
Addison-Wesley, 1994.
6.1 6.4
.
4. M. A. Weiss, Data Structures and Algorithm Analysis, Benjamin/
Cummings, 2nd Edition, 1995.
2 ,
,
,
.
.
, .
, ,
, .
, :
,
,
,
,
,
,
.
K E A A I O 2 : I N A K E K A I E PA E
38
K 2
2.1
2.2
2.3
,
, H/Y. , .
.
,
' () . , ( )
INAKE
39
( ). ,
, ,
. .
,
''. , .
,
, .
2.1
2.1.1
(array)[1], 1,
. , ,
.
, (base type). ,
(homogeneous structure). (index set) I,
. , (index type). .
, , , .
, .
, ( ) = {1, 2, , n}.
1, 2, , n. k, k , -
[1] table,
array .
N
( )
( ) ,
.
40
K E A A I O 2 : I N A K E K A I E PA E
(indexed variable), k (index) . [].
,
= {nl, , nu}, nl < nu. nl nu
(lower bound) (upper bound) .
, ,
:
= nu - nl + 1.
(2.1)
nl = 1, = nu = n.
,
.
1.3 1, (access) (retrieval)
(assignment) (update) .
, (
):
[] ( )
[] ( ).
() . ,
: () , ()
() ( ) .
3, , Pascal : vec, real = {1, 2}.
,
.
1.1.4 . (.., Pascal, C), , .
-
INAKE
41
, (.. Lisp). , .
, ()
.
.
2.1.2
, .
= {nl, , nu}.
, 1.1.5 , H/Y (bytes) . () .
L . L
(element length)
. , (base address)
, bA. ,
L
bA , bA + 1, bA + 2, , bA + L-1.
, ,
, bA + L, bA + 2L,
bA + 3L ..., 1, 2, 3, L nl + 1, nl + 2, nl + 3, . (
1 = ((nl +1) - nl ), 2 = ((nl + 2) - nl ), 3 = ((nl + 3) - nl ), ). ,
,
i (nl i nu) bA + (i - nl) L, (i - nl)
K E A A I O 2 : I N A K E K A I E PA E
42
(2.2)
loc ( Ai ) = c0 + c1i
(2.3)
c0 = bA - n1L, c1 = L
(2.4)
(2.3)
i i.
(array mapping function) (AMF). c0, c1
.
loc (i)
i, c0 c1
(c1L) (c0 + c1L) . , i i .
2.1
,
.
1956 1998
. ,
= {1956, 1957, , 1998}. ,
1965
1965.
2.1 :
INAKE
43
= nu nl + 1 = 1998-1956 + 1 = 43 .
L = 2
(bytes) bMATH = 500,
loc(1956) = 500, loc(1957) = 502,
loc(1958) = 504 ..., byte 1956, 1957, 1958
... 500, 502, 504 ... 2.1.
(2.4),
c0 = 500 - 1956 2 = -3412, c1 = 2
( 2.3)
loc(i) = -3412 + 2 i .
.. 1985
i = 1985:
loc(1985) = -3412 + 2 1985 = 558.
2.1
,
.
MATH
500
501
502
MATH1957
503
504
MATH1958
505
506
.
.
.
1956
25
1957
38
1958
45
1959
.
.
.
41
1997
122
1998
115
MATH 1956
.
.
.
()
.
.
.
.
.
.
()
2.1
()
()
a MATH
K E A A I O 2 : I N A K E K A I E PA E
44
2.1
,
: ) ) , ) ) . ,
1.1.4 .
.
2.1.3
N
= 1 2
,
.
(two-dimensional array)
,
. , ( ) ( ) ,
= 1 2. 1 2 1 2 (dimensions) ,
1 2. , = 1 2.
1 2,
1 = {1, 2, , nu 1 } 2 = {1, 2, , nu 2 }, 1 = nu 1
2 = nu 2 ,
1,1, 1,2, , 2,1, 2,2, .
, 34, 2.2.
2.2.
3 4.
A 1,1
A1,2
A 1,3 A 1,4
A 2,1
A2,2
A 2,3 A 2,4
A 2,3
A3,2
A 3,3
A 3,4
(rows), ,
(columns), .
3 4 , .
INAKE
45
. i,j, i I1 (1 i
1) jI2 (1 j 2),
i j , , j i , , i j.
2.1.4
1 2
H/Y : () , (column-major order),
() ,
(row-major order). 2.3,
.
A1,1
A1,1
A2,1
A1,2
1
A3,1
A1,3
A2,1
A1,4
A2,2
A2,2
A3,2
.
.
.
()
A2,1
.
.
.
.
.
.
2
.
.
.
()
, , , H/Y ,
,
1,1 ,
2.3.
H/Y
() , ()
K E A A I O 2 : I N A K E K A I E PA E
46
,
bA.
1 = { ni1 , , ni1 } 2 = { nl 2 , , nl 2 }, ,
, :
loc(Ai,j) = bA + (1 (j - nl 2 ) + (i - nl1 )) L
(2.5)
loc( Ai, j ) = c0 + c1i + c2 j
(2.6)
(2.7)
, 1 = nu1 - nl1 + 1.
loc(Ai,j) = bA + (2 (i - nl1 ) + (j - nl 2 )) L
(2.8)
loc( Ai, j ) = c0 + c1i + c2 j
(2.9)
c1 = N 2 L, c2 = L, c0 = bA - c1nl1 - c2 nl2
(2.10)
2 = nl 2 - nl 2 + 1.
A , i, j, (2.6) (2.9). ,
.
H/Y, , (access table), ,
. , ,
.
INAKE
47
. .., C
, FORTRAN .
2.2
15 , () .
15 4 (1 = 15, 2 = 4), 1 = {1, 2, , 15}
2 = {1, ,4}. 1 ,
2 . . ..,
5,3 5 3. , 15 4 = 60 .
1
1
15
11
13
14
M 2
12
14
15
12
17
16
14
13
.
.
.
.
.
.
.
.
.
.
15
14
18
15
13
b = 300,
L = 3
, (2.9), (2.10):
c1 = 2L = 3 3 = 9,
K E A A I O 2 : I N A K E K A I E PA E
48
2.1.5
, (multidimensional array) m 1 2 m, m- , = 1 2 m.
m . ..,
loc( Ai1 ,
i2
,...,
im )
(2.11)
cm = L
cl -1 = N l ci i = 2, ..., m
(2.12)
INAKE
5
1988 1997.
3 .
.
) ( , , )
) , bH = 200,
L = 2
.
)
3, 1990 2.
2.1.6
,
.
/ ,
.
, , .
, , , (rectangular arrays),
nl1 = nl 2 nu1 = nu2 ,
, 1 = 2 = . .
(symmetric) Ai,j = Aj,i i, j.
,
(lower triangular array) (upper
triangular array). ,
( 2.4), Ai,j = 0
i < j, , , Ai,j = 0 i > j.
49
2.1
K E A A I O 2 : I N A K E K A I E PA E
50
2.4.
() ,
()
A1,1
0
0
... 0
A1,1
A1,2
0
... 0
A2,1
A2,2
0
... 0
A2,1
A2,2
A2,3
... 0
A3,1
A3,2
A3,3 ... 0
.
.
.
.
.
.
.
.
0
.
.
.
A3,2
.
.
.
A3,3
.
.
.
A3,4 ... 0
.
.
.
.
.
.
.
.
.
.
0
0
An,1
An,2 An,3
... An,4
()
An, n
()
(tridiagonal array)
, (i = j), (i = j-1), . , (i = j+1), . ( 2.4).
, (sparse array)
(.. 80%)
.
, ,
,
2.4. ,
. 1 ( ) , 2 , 3 , , n n- . ,
[2]
S = 1+ 2 + 3 + ... + n =
n(n +1)8
2
(2.13)
, n n = n2,
. .., n =10, ,
100, 55 .
[2] ,
x =
x =1
n(n + 1)
2
INAKE
51
,
: 1,1 2,1 2,2 3,1 3,2 n,n-1 n,n. ,
byte ( ) i,j
i, j ( i j).
i,j i, ,
i-1 ,
i(i -1)
i = 1 + 2 + 3 + + (i-1) =
2
( ). i,j
j i, , j = j-1 . , (i + j) , (i + j)L . , i,j :
loc( Ai , j ) = bA + ( S i + S j ) L = bA +
i(i -1)
L + ( j -1) L
2
loc( Ai, j ) = c0 + c1 i( i -1) + c2 j
(2.14)
c0 = bA - L, c1 = L / 2, c2 = L
(2.15)
,
. , .
,
.
DA
= {1, , nu},
n(n +1)
nu = N =
(2.16)
2
.
K E A A I O 2 : I N A K E K A I E PA E
52
i(i -1)
+ j.
2
(2.17)
) / DA A ) / A
DA. , .
ANAKTHSH i, j (i < j), DA, (2.17).
ENHMEROSH () i,j DA, i, j (i j), ,
, .
ANAKTS (I, J, DA)
1
2
3
4
5
if I < J
then 0
else K ((I * (I-1)/2) + J)
DA[K]
endif
print
1
2
3
4
5
if I J
then K ((I * (I-1)/2) + J)
DA[K] X
else if X 0
then print
endif
endif
,
, .
2.2
n n. )
, ) , )
ANAZHTHH E INAKE
53
)
/ / .
2.2 A
(search) ' :
, ,
, . , .
. ,
, (sequential or linear
search) (binary search).
2.2.1
,
. , ,
, . , ( ), ,
( ) .
2.1: PAMMIKH ANAZHTHH
: (), () ().
: , . , .
GRAM-ANAZHTHSH (A, , X)
1 I1
2 while (I ) and (A[I] X)
3
II+1
endwhile
4
if A[I] = X
5
then print I
6
else print
endif
{ }
{ }
{ }
{ }
{ }
{ }
K E A A I O 2 : I N A K E K A I E PA E
54
, 2.1 (GRAMANAZHTHSH) ,
. () . while
( 2-3) (
3), ( ), , . A[I], X.
()
(I > )
(A[I]=). and
. , ,
> , [],
(A[I] X), (I ) . , if ( 4-6) , , ( 5) ( 6).
2. ,
,
f(n) = n,
. , ,
f(n) =
2.3
n +1
.
2
, ( ) .
.
.
,
.
ANAZHTHH E INAKE
55
: (), () ().
: , . .
DIAT-GRAM-ANAZHTHSH (A, , X)
1 I1
2 while (I ) and (A[I] X)
3
II+1
endwhile
4
if A[I] = X
5
then print I
6
else print
endif
{ }
{ }
{ }
{ }
{ }
{ }
2.3
(DIAT-GRAM-ANAZHTHSH),
while ( 3) ,
([] > )
( ). ,
() () (). , if ( 4-6).
. 2.1 ,
.
(:
, ,
).
2.3
K E A A I O 2 : I N A K E K A I E PA E
56
2.2.2
, ( ) .
:
'' . . , ,
,
,
.
. 2.2 (DIADANAZHTHSH), .
NL NU,
1,
, . , ( 2).
'[ ]' ( )
( Pascal, div.) while ( 3-7)
, ,
. if ( 4-6) while,
.
, (NL > NU) (), ([] = ) (). if ( 8-10) .
ANAZHTHH E INAKE
57
: (), () ().
: , , . , .
DIAD-ANAZHTHSH (A, , X)
NL 1, NU
M [(NL+NU)/2]
while (A[] X) and (NL NU)
if A[] < X
then NL + 1
else NU - 1
endif
7
M [(NL+NU)/2]
endwhile
8
if A[] = X
9
then print
10
else print
endif
1
2
3
4
5
6
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
, , , ,
. f(n) = (logn) .
, = 22.
,
.
9 10 11 12 13 14
A 8 12 15 18 22 23 30 38 45 50 56 60 65 70
2.4
K E A A I O 2 : I N A K E K A I E PA E
58
,
( ) 2.2.
A[M] A[M]X
NLNU
NL
NU
1
14
30
TRUE
TRUE
15
TRUE
TRUE
4
22
FALSE
TRUE
0 .
, , ( )
, while 2.2. , ,
A[M] = X ([5] = = 22).
, , ()
. ,
.
1 2
9 10 11 12 13 14
A 8 12 15 18 22 23 30 38 45 50 56 60 65 70
2 3
2 1
3
2
, ,
,
.
, ,
, . ,
,
.
A N A Z H T H H E I N A K E / E PA E
.
,
. ,
,
.
59
2.4
2.3
1, (record)
.
.
2.3.1
, , , . , (heterogeneous
structure).
(field).
(identifier) (type).
, . , . , .
( ) R (fd1, fd2, ,
fdn) n- (. ) 1, 2, ,
n , . , R
fd1(R), fd2(R), , fdn(R). ,
, ,
, .
R = 1 2 n ,
.
( -),
, (-)
(),
() .
K E A A I O 2 : I N A K E K A I E PA E
60
fdx ()
(fdx1, fdx2, , fdxm), fdx1(fdx(R)), fdx2(fdx(R)), , fdxm(fdx(R)).
. fd1, fd2, , fdn ,
fdx1, fdx2, , fdxm ...
,
.
2.5
-
: ., , .,
, ., .
. , .
, , .
, .
MAHTH
MAHTH
AP. MHTPOOY
ONOMATENYMO
ONOMA
ENYMO
ON. ATPO
YO
HM. ENNHE
HMEPA
TAH
AP. MHTPOY ON. ATPO YO
MHNA
ETO
ONOMATEMYNO
HM. ENNHE
TAH
ONOMA
ENYMO
HMEPA
MHNA ETO
., , .,
, . ,
, , , , -
E PA E
61
. ,
(),
,
(()).
()
.
, ,
( ) ( )
. :
FDX(R) ( )
FDX(R) X ( )
FDX .
Pascal
2.5, , .
Pascal, .
type
onmateponrec = record
onoma:array [1..12] of char;
eponymo: array [1..24] of char;
end;
mathitisrec = record
armitrwou: integer;
onomatepon: onomateponrec;
onpatros: array [1..12] of char:
end;
var mathitis: mathitisrec;
2.6
K E A A I O 2 : I N A K E K A I E PA E
62
, oneponrec mathitisrec
(record). ,
(onepon). (oneponrec)
(onoma, eponymo). , 12 , , 24 .
(.. )
Pascal. (armitrwou
onpatros) (onomatepon).
(integer), 12 .
() onomateponrec.
, (mathitis) ()
mathitisrec,
.
Pascal armitrwou mathitis mathitis.armitrwou. ,
onoma mathitis.onepon.onoma.
,
.
C
2.6
C :
typedef
struct {
char onoma [12];
char eponymo [24];
} onomateponrec;
E PA E
typedef
struct {
int armitrwou;
onomateponrec onomatepon;
char onpatros [12];
} mathitisrec;
mathitisrec mathitis;
O (onomateponrec, mathitisrec)
(struct) C . , ()
() (onomatepon).
int . ,
Pascal.
2.3.2
, .
(composite structures). (array of records), . ,
(key)
. ,
. . ..
MAHTH ( 2.5).
MAHTH ..
-
.
63
2.6
K E A A I O 2 : I N A K E K A I E PA E
64
2.7
, KLEIDI
. ,
.
.
2.3.
. ,
2.3, [] KLEIDI(A[I]).
, .
.
' , , ' .
. ' ,
. , , ,
. ' ,
. ,
, , .
/.
, .
, , (),
. ,
, ,
E PA E / Y N O H
65
, , ,
. ,
, , ,
. .
,
, .
' .
- ,
.
, , . ,
( ) .
,
. , , .
1. , ., ,
, 1993.
5
,
, Fibonacci .
2. Kruse, L. R., Data Structures and Program Design, 2nd Edition,
Prentice Hall, Englewood Cliffs, NJ 1991 ( 3
, 1994).
6.2 Rectangular Arrays, 3.
Variation: Access Tables
. , 6.3 Tables of
66
K E A A I O 2 : I N A K E K A I E PA E
various shapes .
, 5.2 Sequential Search,
4. Analysis of Sequential Search .
3. , ., , . ', ART of TEXT, 2
, 1992.
2.3 ' ' 2.4
, , .
, 7 , , ,
Fibonacci, .
4. Standish, A. T., Data Structures, Algorithm and Software Principles,
Addison-Wesley, Reading, MA 1994.
6.5 Analyzing Simple Algorithms ,
Analysis of Sequential Search
Analysis of Binary Search
.
5. Stubbs, F. D. Webre, W. N., Data Structures with Abstract Data
Types and Pascal, 2nd Edition, Brooks/Cole (Wadsworth), Pacific
Grove, CA 1989.
2.2.4 Special Arrays , 2.3 Records
2.5 Composite Structures .
, . ,
,
.
, :
,
,
,
.
68
3
3.1 ,
3.2
3.3
3.4
, . , . ,
,
.
, , . ,
. , :
, "1.1.2 " 1 . , ,
, , , , . , ''.
. , , ,
'', '1.1.5 '
1.
, ,
,
.
O P I M O , A N A A PA TA H K A I T Y O I T N
69
3.1 ,
3.1.1
, ,
. , ,
. .
, .. ,
. , , ,
. ,
. ,
.
(sequence)
. L, n , n ( n ) (L1, L2, , Ln), L1
Ln . Li (predecessor)
(Li-1) (successor) (Li+1),
, , ,
.
(position) () . , ,
. Li i.
(head).
(null list).
, ,
L L = {1, , n}.
, . ,
(
).
70
(), . ,
, 2.1,
(sequential access). , , . ,
, ,
. ,
, .
,
' , (general lists)[1]
(special lists). / ,
.
, .
. ,
(contiguous representation),
(contiguous) . ,
. , (linked representation), /. ,
,
(link) . ,
, (contiguous lists)
(linked lists).
O P I M O , A N A A PA TA H K A I T Y O I T N
71
3.1.2
L . , , , , 3.1[2],
L = {1, , n}.
. ,
(Lt)
(n), , .
()
L1
L2
l1
l2
...
Lt
L n-1
lt
Ln
...
3.1
. , ,
(overflow), ,
. , , . ,
. , , , .
, ,
. 3.1,
Pascal 3.1 C.
[2] , 3.1, , 2.1.
72
3.1
Pascal
Pascal :
type
slista = record
stoixeia: array [1..n] of typostoixeiou;
telos: 0..n
end;
, , (type) slista
(record) . (stoixeia)
(array) {1, 2,
, n}, . n, ,
'typostoixeiou'. (telos)
{0, 1, 2, , n}.
stoixeia .
telos ,
. ,
. telos
n, . , 0 .
3.1
C
C
:
typedef
struct {
typostoixeiou stoixeia [n];
int telos;
} slista;
O P I M O , A N A A PA TA H K A I T Y O I T N
, , (typedef)
slista / (struct) /.
(stoixeia) n,
, 'typostoixeiou'. (telos) (int) ( C ([1..n]) Pascal). , 3.1.
3.1.3
(link) [3]
(pointer) () . ,
, (nodes). .
()
. () ,
.
(one-way or singly
linked list). ,
.
3.2 L = (l1, l2, l3, l4),
(1, 2, 3, 4). Ni
.
Li li. Pi .
(
). ( N4) ,
,
.
(null pointer).
[3] (pointes)
(indexes) .
73
74
NIL. L ,
( N1) , . , NIL.
L1
P1
l1
3.2
L2
P2
l2
N1
P3
L3
l3
N2
l4
N3
L4 P4
N4
. . , ,
. , (, ) . , FORTRAN, BASIC COBOL,
().
(pointer
variables)[4]. (pointer)
/.
, . ,
( ).
,
Pascal C. , . ,
, ,
.
[4] (indexed variables),
, (pointer variables), .
O P I M O , A N A A PA TA H K A I T Y O I T N
Pascal
Pascal, , :
type
deiktiskombou = ^kombos;
kombos = record
stoixeio: typostoixeiou;
deiktis: deiktiskombou
end;
var
L: deiktiskombou;
^ ( ) Pascal
/ .
,
deiktiskombou. kombos,
^ . ,
kombos (record)
. , stoixeio, , typostoixeiou. ,
deiktis, deiktiskombou,
. , L
deiktiskombou, .
,
.
75
3.2
76
3.2
C
C
:
typedef struct kombos *Deiktiskombou;
typedef struct kombos {
typostoixeiou stoixeio;
deiktiskombou deiktis;
} KOMBOS;
Deiktiskombou L;
, * ^ Pascal. , Deiktiskombou.
, L, KOMBOS,
(struct)
kombos. , 3.2.
3.1
(traversal)
. ( ) , , . ,
(visiting). . .., .
O P I M O , A N A A PA TA H K A I T Y O I T N / PA E I E Y N E X O M E N H I TA
77
: (L) (T).
: , . ,
.
SL-DIAPERASH (L, T)
1 for K 1 to T
2
PROCESS (L[K])
endfor
{ }
{ }
, 3.1 (SL-DIAPERASH).
PROCESS, .
T , . 3.1
,
T () .
. PROCESS .
3.2.2
(insertion)
() .
, ,
.
. ,
. 3.3 4,
7.
78
16
19
25
7
()
18
3.3
() () ()
16
19
25
7
()
18
16
18
19
25
7
()
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
3.2 (SL-EISAGWGH)
.
3.2 : -
PA E I E Y N E X O M E N H I TA
79
, ( 12), .
, ( T)
( ). while ( 4-6)
( 3). ,
( 7)
( 8),
, .
3.2.3
(deletion)
, . 3.3 (SL-DIAGRAFH).
3.3: IAPAH E YNEXOMENH ITA
{ }
{ }
{ }
:
,
, for ( 1-2). ,
T ( 3),
.
80
3.2.4
. (2.1 2.2) : L T .
3.3.
.
, , .
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
, ( 2.1) ( 3.3),
3.3. : ' ,
( 1-3) , (
4), ( 5-7),
( 8).
P A E I E Y N E X O M E N H I T A / P A E I E A A Y N E E M E N H I TA
81
() .
.
3.1
() .
.
3.2
3.3
,
. ..,
Pascal new(p) dispose(p) ,
p.
, .
.
, KOMBOS.
KOMBOS(P), P , . , STOIXEIO(KOMBOS(P)), DEIKTHS
(KOMBOS(P)) ()
KOMBOS(P).
, i, i
i, .
3.2, 1, KOMBOS(P1),
2, 1. 2, DEIKTHS(KOMBOS(1)),
2, 3.
3.3.1
, 3.4 (DL-
82
DIAPERASH). L ,
,
P () , . , PROCESS.
3.4 : , () P,
. ,
.
( 3), PROCESS
. ( 4),
P .
P NIL,
.
: (L) .
: , . ,
.
DL-DIAPERASH (L)
1 P L
2 while P NIL
3
ROCESS (STOIXEIO(KOMBOS(P)))
4
P DEIKTHS(KOMBOS(P))
endwhile
{ }
{ }
{ }
{ }
3.3.2
.
3.4, 3.5.
P A E I E A A Y N E E M E N H I TA
83
Lx
Px
lx
()
Nx
L1
P1
L2
l1
P2
l2
N1
P3
L3
l3
N2
3.4
L4 P4
l4
N3
N4
()
: ()
, ()
,
, 3.5 (DL-EISAGWGH-META).
,
() ().
( 1-2),
. 3,
( )
PI. 3.4, P =
PI = P1, ( x) Px P2,
3. 4, PI
.
3.4, P2 .
Lx
3.5
Px
lx
L
L1
P1
l1
L2
P2
l2
N1
Nx
P3
L3
l3
N2
L4 P4
l4
N3
N4
3 4 ,
3.4 3.5, 3.6.
84
: ()
().
: , , . , ,
.
DL-EISAGWGH-META (P, PI)
1 if (P = NIL) or (PI = NIL)
2
then print
3
else DEIKTHS(KOMBOS(P)) DEIKTHS(KOMBOS(PI))
4
DEIKTHS(KOMBOS(PI)) P
endif
Lx
{ }
{ }
{ }
{ }
Px
Lx
lx
lx
3.6
() 3 ()
4
3.5
L2
l2
P2
Px
Nx
P3
L3
l3
N2
N3
()
L2
l2
P2
Nx
P3
L3
l3
N2
N3
()
3.3.3
3.7. , 3.6 (DL-DIAGRAFHMETA). ()
, ,
(.. 1 3.7, 2). ,
, ,
3.7, , , .
,
, .
P A E I E A A Y N E E M E N H I TA
85
: (PI) , , .
: , , . , ,
.
DL-DIAGRAF(PI)
1 if (PI=NIL) or (DEIKTHS(KOMBOS(PI))=NIL)
2
then print
3
else P DEIKTHS(KOMBOS(PI))
4
DEIKTHS(KOMBOS(PI)) DEIKTHS(KOMBOS(P))
endif
1 ( = L)
(DEIKTHS(KOMBOS(PI)) = NIL) .
, . , 3
4. 3 (,
, ),
. 3.7,
2. 4
( 2 3.7)
(
) . , 2
3, 4.
, . , A 3.6 : ) L, ) 1 L ) 3, 4 L DEIKTHS(KOMBOS(L)).
{ }
{ }
{ }
86
L1
P1
l1
L2
P2
l2
N1
P3
L3
l3
N2
L4 P4
l4
N3
N4
()
3.7
() ,
()
3.4
L1
P1
l1
L2
P2
l2
N1
P3
L3
l3
N2
L4 P4
l4
N3
N4
()
-
.
-
.
, ,
. ,
, ,
. 3.4
(DL-DIAGRAFH-K),
.
while ( 2-5). 1 , . , , , - , , . while
, , . , ( 3.6).
while
- (P = NIL).
P A E I E A A Y N E E M E N H I TA
87
, , , .
, if ( 6-8).
: (L) ().
: , - ,
. , .
DL-DIAGRAF-(L, )
1 PK L, I 1
{ }
2 while (PKNIL) and (IK)
{ }
3
PI P
{ }
4
PK DEIKTHS(KOMBOS(PK))
{ }
5
+1
{ }
endwhile
6 if (PNIL)
{ }
7
then DEIKTHS(KOMBOS(PI)) DEIKTHS(KOMBOS(PK)) {}
8
else print
{}
endif
.
- - .
3.3.4
. , ' '' . , , , -.
, , .
3.3
88
3.5
.
.
3.5 (DL-EURESH-MHDEN). (
3.4).
, while ( 2-4),
( 3). ,
( 4). ,
( 5). ,
( 6).
: (L) .
: , . ,
.
DL-EURESH-MHDEN(L)
1 P L, I 0
2 while P NIL
3
if STOIXEIO(KOMBOS(P))=0
4
then I I+1
endif
5
P DEIKTHS(KOMBOS(P))
endwhile
6 print I
{ }
{ }
{ }
{ }
{ }
{ }
P A E I E A A Y N E E M E N H I TA / A E K A T H O P I E Y N E E M E N H I TA
,
(
3.6).
89
3.4
3.4
. ,
, .
3.4.1
Pl3 L3 Pr3
N2
l3
Pl4 L4 Pr4
l4
N3
N4
,
, . , .
3.4.2 K
3.8
90
3.9. , , .
3.9
L1
l1
P1 L2 P2
l2
N1
N2
L3 P3
l3
N3
L4 P4
l4
N4
3.4.3
, . ,
. ,
,
. , ,
, ' .
, .
() , , , , ,
.
, , , ,
. .
.
A E K AT H O P I E Y N E E M E N H I TA / Y N O H
, .
.
, ,
. ,
.
1. , . , ,
, 1993.
3.4 ,
,
(garbage
collection).
2. , . , , . ', ART of TEXT, 2
, 1992.
3.5.1. (sentinel node)
.
3. Cormen, H. T., Leiserson E. C. Rivest, L. R., Introduction to
Algorithms, McGraw-Hill, Cambridge, MA 1996 ().
11.2 Linked Lists
. ,
11.3 Implementing pointers and objects
.
4. Main M. Savitch W., Data Structures and Other Objects,
Benjamin/Cummings, Redwood City, CA 1995.
91
92
, . ,
.
, :
,
,
,
,
,
.
LIFO
E
94
FIFO
HPIFO
4
4.1
4.2
4.3
4.4
,
.
, . , , ,
,
.
, .
,
. , ,
/.
TOIBA
95
, , , .
4.1
4.1.1 O
(stack) ,
' . ,
/ ,
(top)
. , ,
(bottom).
,
( )
. ,
.
LIFO (Last-In First-Out). , , ' , ,
.
.
, (contiguous stack)
(linked stack). ,
, , .
,
.
. ,
.
4.1 .
().
96
s1
.
.
.
st
() ,
()
.
.
.
.
.
.
4.1
()
s1
s2
s2
s1
()
4.1.2
, , ( )
/[1]. , .
.
4.1: EIAH E YNEXOMENH TOIBA
{ }
{ }
{ }
{ }
TOIBA
97
: (S) (T).
: , , . , .
SS-DIAGRAFH (S, T)
1 if T = 0
2
then print
3
else print S[T]
4
T T-1
endif
{ }
{ }
{ }
{ }
. 4.1 (SSEISAGWGH),
( 1-2), ( 3-4) ,
( 3) ( 4).
4.2 (SS-DIAGRAFH),
( 1-2), ( 3-4)
( 3) ,
. ,
.
.
98
: ()
(S).
: , ,
. , , .
DS-EISAGWGH (P, S)
1 if P=NIL
2
then print
3
else DEIKTHS(KOMBOS(P)) S
4
SP
endif
{ }
{ }
{ }
{ }
: (S).
: , , . , .
DS-DIAGRAFH (S)
1 if S = NIL
2
then print
3
else print STOIXEIO(KOMBOS(S))
4
S DEIKTHS(KOMBOS(S))
endif
{ }
{ }
{ }
{ }
. 4.3 (DS-EISAGWGH),
( 1-2), ( 3-4) . S,
( 3), ,
.
4.4 (DS-DIAGRAFH),
(-
TOIBA
99
1-2), ( 3-4)
( 3)
,
.
.
()
- .
, .
4.1 (SS-DIAGRAFH-KP).
( 3) ( 4) while ( 2-4). , () () . ,
= 0 > ( = +1).
if ( 5-8) . ()
( 5), - ( 6).
,
.
4.1
100
: (S), (T)
().
: ,
, . ,
, .
SS-DIAGRAFH-KP (S, T, K)
1 I1
2 while (T > 0) and (I K)
3
T T-1
4
I I+1
endwhile
5 if I = K +1
6
then print S[T+1]
7
else print S[1]
8
print ' '
endif
4.1
{ }
{ }
{ }
{ }
{ }
{ - }
{ }
{ }
.
- .
.
4.2 E
4.2.1
.
, , ,
, . ,
,
.
, , ...
, . , , LIFO
.
( ) (), .
,
(activation record) (stack frame),
() .
4.2
.
. ,
,
( 4.2) . ,
( 4.2) ...
. , () (
4.2),
... , ( 4.2).
101
102
4.2
.B
.B
.B
.A
.A
.A
.A
.A
()
()
()
()
()
()
4.2.2 E
.
() (infix notation). ,
(+), (+)*, *+*,
(operators), (.. +, *, -, /)
, (operands).
. (prefix notation) (Polish
notation)[2],
. , +, *+, +**.
(postfix notation) (reverse Polish notation), (). .., , +,
+*, **+.
EAPMOE TOIBA
103
(, )
. . ,
.
,
()
.
. , ,
.
B
1
2
3
4
5
6
7
6
3
4
*
+
2
/
6
3 6
4 3 6
12 6
18
2 18
9
4 * 3 = 12
12 + 6 = 18
18 / 2 = 9
, 6 3 4 * + 2 / ( * + /
= 6, = 3, = 4 = 2),
(6 + 3*4)/2.
4.1,
(3 ). : () ,
() , ()
() ()
, ,
.
, .
4.1
104
4.2
,
, .., { + ( - [ + ]
/( - ))}*( - ( - ( - [ - ]))).
. ()
.
4.3
4.3.1 O
,
(
)
( ).
.
, ,
. ,
.
, FIFO (First-In First-Out).
(queue). ,
, : ) E ,
(rear) )
, (front) .
, , ,
, , , (contiguous queue)
(linked queue). 4.3
.
O Y PA
105
1
Q
...
F
qf qf+1
()
...
qr
...
()
()
qf
qf+1
...
qr
4.3
()
()
()
,
: .
. . .
4.3.2
, ,
[3].
.
F=R=0, F=R=1.
4.5 4.6.
[3] enqueue dequeue
( 'serve') .
() ,
()
106
{ }
{ }
{ }
{ }
{ }
{ }
4.5 (SQ-EISAGWGH) :
( 1-2),
( 3-6), ' ( 3)
, ,
( 4). , ( 5)
( 6).
4.6 (SQ-DIAGRAFH) :
( 1-2), (
3-6), ' ( 3) (
). ( 4),
, ( ).
, ( 5),
(F = R = 1), ( 6).
O Y PA
107
{ }
{ }
{ }
{ }
{ }
{ }
F = R = N I L, F =
R NIL. 4.7 4.8.
4.7: EIAH E YNEEMENH OYPA
: (F) (R) ()
.
: , . , .
DQ-EISAGWGH (F, R, P)
1 if F=NIL
2
then F P
3
else DEIKTHS(KOMBOS(R)) P
4
DEIKTHS(KOMBOS(P)) NIL
endif
5 RP
{ }
{ }
{ }
{ }
{ }
108
4.7 (DQ-EISAGWGH) :
' , ( 1). ,
( 2). ,
( 3),
, ( 4). ,
, ( 5).
4.8: IAPAH E YNEEMENH OYPA
: (F) (R) .
: , , . , , .
DQ-DIAGRAFH (F, R, X)
1 if F = NIL
2
then print ' '
3
else print STOIXEIO(KOMBOS(F))
4
F DEIKTHS(KOMBOS(F))
5
if F = NIL
6
then R NIL
endif
endif
{ }
{ }
{ }
{ }
{ }
{ }
4.2
, .
O Y PA
109
.
, . E,
( 4.8).
4.2 (DQ-ADEIASMA-SS).
1
( ). ,
while ( 2-5). , ,
( 3),
( 4)
, ( 5).
, ( )
( 6). , .
4.2: AEIAMA YNEEMENH OYPA E TOIBA
{ }
{ }
{ }
{ }
{ }
{ }
110
4.3
. ( ,
, .)
4.4
4.4.1
. ' ,
, . ,
. , R = N,
,
.
, ,
F R. . ,
, (circular
array) , (circular queue). ' ()
() ()
. H
4.4.
, R = ( 4.5), R
R + 1), R '' (R 1) (R
(Q[R] X). F = N
( 4.6),
F (F F + 1), F '' (F 1).
E I I K O I T Y O I O Y PA
111
1
q1
q2
() F
4.4
() , ()
qn
Q
qn1
qf
qr
()
R
()
1
Q
q1 q2
qf
qr
()
()
N
qn+1 qn
()
4.4.2
4.4.3
FIFO,
.
,
, .
112
,
, , . ,
HPIFO (Highest-Priority-In First-Out).
(priority queue). , ,
. .
, .
,
. , , .
. , ' ( ),
.
.
() /
. , /
.
' .
()
, . ,
, , , () , .
LIFO, -
E I I K O I T Y O I O Y PA / Y N O H
, . FIFO, , .
H
/.
.
.
HPIFO,
, .
1. ., , . ', ART of TEXT, 2
, 1992.
3.3.2
,
.
2. Main M. Savitch W., Data Structures and Other Objects,
Benjamin/Cummings, Redwood City, CA 1995.
6 7 Stacks
Queues ,
,
Pascal. :
, , , , , , .
3. Standish, A. T., Data Structures, Algorithm and Software Principles,
Addison-Wesley, Reading, MA 1994.
7 , Linear Data
Structures-Stacks and Queues,
113
114
.
, Pascal . .
,
. ,
.
, :
,
,
-,
,
,
.
K E A A I O 5 : E N T PA
116
5
5.1
5.2
5.3
5.4 -
5.5
,
.
,
.
,
. , , .
, .
, ().
, - .
()
.
, , AVL , .
117
5.1
. () () ,
, .
.
5.1 .
(nodes) (edges).
. , (root) . .
. (terminal
nodes) (leaves). , , (internal) (non terminal) .
(null tree) . ,
5.1 1 ,
2, 3, 4 8 . , (subtree)
.
E
()
0
1
2
3
N1
N3
N2
N 5 N6 N 7
N11
N8
N4
N9 N10
N12
. x (parent)
y, x
5.1
K E A A I O 5 : E N T PA
118
y. y (child) x.
. .. 5.1 4
9, 10 9, 10 . , ..
9, 10 (siblings). ,
(descendant) (ancestor). ..
12 3,
( 8). , 3 12.
,
5.1. 5.1.
5.1
(path) x 1 12
y , 1-3-8-12.
x, y .
.
(length)
.
(3), .
(level) (depth)
.
() 8
(2),
(2).
. (0),
(0).
(height)
() .
(3), .
1.
(degree)
.
2 (3),
3 (1).
(0).
E N I K A T O I X E I A K A I O P I M O I / YA I K A E N T P A
119
(3).
n n .
(binary),
(ternary) (quadtree) .
5.2
5.2.1
(2)
. [1].
, ,
, ,
.
,
.
5.2.
1 2 3.
5 10,
.
.
0 () 20 = 1, 1 21 = 2, 2 22 = 4 ...,
() k 2k. , h
20 + 21 + 22 + + 2h =
= 2h+1 - 1 [2].
k =0
[1]
.
n
[2]
k =0
xk =
x n +1 - 1
.
x -1
(),
,
,
,
()
,
.
K E A A I O 5 : E N T PA
120
N1
0
1
N3
N2
N4
N8
N9
N5
N6
N7
N10
5.2
(complete),
, , . , n . ..
5.3 () . () ,
() . () , ,
, .
()
()
()
5.3
: () , () ()
,
(almost complete)
YA I K A E N T PA
121
.
.
h n ( )
:
h log n.
.
h
(20+21+22+ +2h-1) + 1,
(h-1)
. (20+21+22+ +2h-1) = 2h-1,
(2h-1) + 1 = 2h.
n , n 2h logn log(2h) h logn.
, ( ) :
h log( n +1) -1.
:
h 2h+1-1, n n 2h+1 - 1 n + 1 2h+1 log(n + 1) log(2h+1)
h + 1 log(n + 1) h log(n + 1) - 1.
, . )
)
.
,
, . h
n = (2h+1 1) ,
. , .
(1)
() -
K E A A I O 5 : E N T PA
122
, ,
. ,
i ,
i , :
(1) 2i > n , n
, i () .
(2) i [i/2] , i > 1, [ ]
. i = 1, .
(3) i 2i, 2i n, .
(4) i 2i+1, 2i + 1 n,
.
5.4
5.2,
4.
,
.
T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11 T12 T13 T14 T15
T N1 N2 N3 N4 N5 N6 N7 N8 N9 N10
[i / 2]= 2
i = 4
4
2i+1=8
.
2i + 1 = 9
5.4
. , ,
.
i
. LPi
, ,
RPi ,
YA I K A E N T PA
123
. 5.5
.
R
(root pointer).
(),
NIL, . R .
Pascal
C ( 3.2 3.2),
(.. ldeiktis, rdeiktis)
(deiktis), R.
R
LP1
RP2
LP2
RP4
LP4
T2
N2
LP5
T4
N4
RP5
T5
N5
RP8
LP8
RP1
T1
N1
RP3
LP3
LP6
RP6
T6
N6
T3
N3
LP9
T8
N8
LP7
RP9
T9
N9
RP7
T7
N7
RP10
LP10
T10
N10
5.5
5.2.2
.
, (preorder), (inorder) (postorder) .
(1) ,
K E A A I O 5 : E N T PA
124
(2) ,
(3) ,
,
...
,
(1)-(2)-(3), (2)-(1)-(3)
(2)-(3)-(1).
. ,
. ,
. ,
5.2,
1, 2, 3, , 10,
8, 9, 4, 10, 5, 2, 6, 7, 3, 1.
. ) )
(recursion). , . ,
,
, , ,
.
( 5.1) .
:
() ,
,
, .
.
YA I K A E N T PA
125
() () .
5.1 (T-PROD-DIAPERASH)
(S, T) () . () , () . ,
STOIXEIO(KOMBOS(P)) ,
ADEIKTHS(KOMBOS(P)), DDEIKTHS(KOMBOS(P)) .
5.1: POIATETAMENH IAEPAH
: (R) .
: .
.
-PROD-DIAPERASH (R)
1 T 0, P R{}
2 while P NIL
3
PROCESS(STOIXEIO(KOMBOS(P)))
4
if DDEIKTHS(KOMBOS(P)) NIL
5
then T T + 1
6
S[T] DDEIKTHS(KOMBOS(P))
endif
7
if ADEIKTHS(KOMBOS(P)) NIL
8
then P ADEIKTHS(KOMBOS(P))
9
else P S[T]
10
TT-1
endif
endwhile
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
K E A A I O 5 : E N T PA
126
, ( if,
4-6).
, ,
( ) ( if, 7-10).
NIL,
.
5.1
(9) . () , , , , , , , , , , , , , , , , , .
.
5.3
5.3.1
Y A I K A E N T P A / YA I K A E N T P A A N A Z H T H H
127
,
()
(7, 15, 18, 24, 46, 48, 52, 65, 74,
5.6).
N1
N2
N4
46
N3
15
N5
24
N6
48
52
N7
74
5.6
N8 18
N9 65
, ,
, ,
. ,
( 2.3.2
).
5.3.2
.
:
(1)
() ,
,
() ,
.
K E A A I O 5 : E N T PA
128
(2) (1)
() ()
() () ().
, 5.2 (T-BASIKH-ANAZHTHSH). ,
.
, 5.2.
5.2: BAIKH ANAZHTHH E YAIKO ENTPO
: (R) ()
().
: . .
-BASIKH-ANAZHTHSH(R, P)
1 PX R, PXG NIL, EURESH FALSE
2 X STOIXEIO(KOMBOS(P))
3 while (not EURESH) and (PX NIL)
4
if X < STOIXEIO(KOMBOS(PX))
5
then PXG PX
6
PX ADEIKTHS(KOMBOS(PX))
7
else if X > STOIXEIO(KOMBOS(PX))
8
then PXG PX
9
PX DDEIKTHS(KOMBOS(PX))
10
else EURESH TRUE
endif
endif
endwhile
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
YA I K A E N T PA A N A Z H T H H
129
, , .
( 1, 2).
while ( 3-10)
, . ,
() ( = L,
6 9) ( EURESH =
TRUE, 10). ,
, EURESH TRUE,
G
, , PXG = NIL.
, EURESH FALSE, NIL PXG
.
5.2: ANAZHTHH E YAIKO ENTPO
: (R) ()
.
: , ,
.
-ANAZHTHSH(R, P)
1 T-BASIKH-ANAZHTHSH(R, P)
2 if EURESH
3
then print
4
else print
endif
{ }
{ }
{ }
{ }
K E A A I O 5 : E N T PA
130
.
( if,
2-4) ( 3) ( 4). EURESH
1.
5.3.3
, . ,
. ,
(2)
. , (2),
, ,
.
5.3
(T-EISAGWGH).
5.3, ( 1), ( 5.2). if ( 2-8)
.
(1 , 2),
( 3). ,
(2 , 4), ( )
( 5-7). , (3 ),
, ( 8). , A 5.3
22 5.6
8, 1-2-5-8.
YA I K A E N T PA A N A Z H T H H
131
: (R) ()
.
: ,
. .
-EISAGWGH(R, P)
1
2
3
4
5
6
7
8
T-BASIKH-ANAZHTHSH(R, P)
if (PX = NIL) and (PI = NIL)
then R P
else if EURESH = FALSE
then if X < STOIXEIO(KOMBOS(PI))
then ADEIKTHS(KOMBOS(PI)) P
else DDEIKTHS(KOMBOS(PI)) P
endif
else print
endif
endif
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
5.3.4
.
. , . x ,
( ):
(1) x , x
.
(2) x , x
.
(3) x ,
() x
, , (-
K E A A I O 5 : E N T PA
132
), y, (1) (2),
() x
() y.
, , y
( 3), , ,
. , , , , . , (3)
(3)
y.
5.1.
()
5.6,
() 52. 52 () 52
. 52
.
46
15
52 (3)
24
48
(3)
74
65 (3)
18
46
()
15
65
24
18
74
48
()
YA I K A E N T PA A N A Z H T H H
133
() .
52 , 65,
(3) . 52 (3) , , 65 (3).
().
, . ,
(1) (2), ,
5.4 (T-DIAGRAFH-A).
5.4: MEPIKH IAPAH E YAIKO ENTPO - A
: (R) , ()
(G) .
: . .
-DIAGRAFH-A (R, P, PG)
if (ADEIKTHS(KOMBOS(P)) = NIL) and
(DDEIKTHS(KOMBOS(P)) = NIL)
then PZ NIL
3
else if ADEIKTHS(KOMBOS(P)) = NIL
4
then PZ DDEIKTHS(KOMBOS(P))
5
else PZ ADEIKTHS(KOMBOS(P))
endif
endif
6 if PG NIL
7
then if P = ADEIKTHS(KOMBOS(PG))
8
then ADEIKTHS(KOMBOS(PG)) PZ
9
else DDEIKTHS(KOMBOS(PG)) PZ
endif
10
else R PZ
endif
1
2
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
134
K E A A I O 5 : E N T PA
,
.
if. ( 1-5)
,
( 2) ( 4) ( 5) . if ( 6-10)
, ( 8)
( 9) ( 10).
() ,
(3), ,
5.4 (T-DIAGRAFH-B). ,
5.4.
5.4 ,
G,
( )
. 5.4
. ( 1-5),
while,
. , , ( 2)
( 5),
( 3).
G ( 1,
4), .
()
(). R, PY, PYG,
(R, P, PG). R, PY, PYG R, P, PG .
YA I K A E N T PA A N A Z H T H H
135
: (R) , ()
(G) .
: . .
-DIAGRAFH- (R, P, PG)
1 PYG P
2 PY DDEIKTHS(KOMBOS(P))
3 while ADEIKTHS(KOMBOS(P)) NIL
4
PYG PY
ADEIKTHS(KOMBOS(PY))
5
PY
endwhile
6 T-DIAGRAFH-A (R, PY, PYG)
7 if PG NIL
8
then if P = ADEIKTHS(KOMBOS(PG))
9
then ADEIKTHS(KOMBOS(PG)) PY
10
else DDEIKTHS(KOMBOS(PG)) PY
endif
else R PY
endif
12 ADEIKTHS(KOMBOS(PY)) ADEIKTHS(KOMBOS(P))
DDEIKTHS(KOMBOS(PY)) DDEIKTHS(KOMBOS(P))
()
(). if (
7-11),
( 9-10).
(PG =
NIL), ( 11). , ( 12-13).
()
, 5.4 (TDIAGRAFH).
( 1)
. ( 2), -
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
K E A A I O 5 : E N T PA
136
( 3). , . ( 4),
5.4 ( 5), 5.4 ( 6).
5.4: IAPAH E YAIKO ENTPO
: (R) ()
().
: , .
.
-DIAGRAFH(R, P)
1
2
3
4
5
6
T-BASIKH-ANAZHTHSH(R, P)
if EURESH = FALSE
then print
else if (ADEIKTHS(KOMBOS(PX)) = NIL) and
(DDEIKTHS(KOMBOS(PX)) = NIL)
then T-DIAGRAFH-B(R, PX, PXG)
else T-DIAGRAFH-A(R, PX, PXG)
endif
endif
{ }
{ }
{ }
{ }
{ }
{ }
5.3.5
,
.
h,
, , ,
( 5.2).
n ,
.
, n n!
YA I K A E N T PA A N A Z H T H H
137
, n n,
, , .
, , .., .
() n.
,
5.2.1 .
log(n + 1) - 1 h n
, , C(n)
log(n+1) C(n) n+1.
C(n) , f(n) = O(logn),
, C(n)
, f(n) = O(n).
f(n) = O(logn).
n , , , .
n , ,
f(n) =
O(n), .
, ,
.
: , , , ,
, , , , , , , .
) , , () ,
.
) -
5.2
K E A A I O 5 : E N T PA
138
() , .
.
5.4
5.4.1 O
-
,
,
.
, - (heap tree) (heap).
, (heapsort),
. ,
.
N1 74
N3
N2 65
N4
5.7
N8
N5 18
52
N9
24
48
N6
46
N7
9 N10
(maxheap) (minheap). , , . .
5.7 -
. , ,
(
5.2.1 -
E N T PA
139
). , (..
65) (52
18).
( 5.2.1 ), .
5.4.2 E
. :
(1) ()
,
.
(2) ()
, .
-
- 5.7,
72.
(), () (), .
() (). 72 > 18, 72 (18) (
). 72 > 65,
(65) ( ). , 72 < 74.
5.2
K E A A I O 5 : E N T PA
140
74
74
74
72
65
65
52
72
52
18
72
65
52
18
()
18
()
()
10
11
() H 74
65
48
52
18
24
46
72
[11/2] = 5
() H 74
65
48
52
72
24
46
18
48
52
65
24
46
18
[5/2] = 2
() H 74
72
, 5.5 (H-EISAGWGH).
,
, G THESH. P G
, . HESH
, , .
. , , , ( 5.2.1 ,
).
(). , while ( 2-6)
E N T PA
141
.
( 6).
( 2)
( if, 4-5). ,
if (
7). , ( 8).
5.5: EIAH E PO
: () -, ()
().
: . .
H-EISAGWGH(H, N, X)
1 N N+1, P N, THESH FALSE
2 while (P<1) and (not THESH)
3
G [P/2]
4
if X H[G]
5
then H[P] X, THESH TRUE
endif
6
H[P] H[G], P G
endwhile
7 if THESH=FALSE
8
then H[1] X
endif
{ }
{ }
{ }
{ }
{ }
{ -}
{ }
{ }
5.4.3
() ,
.
:
(1) ,
(2) ()
, , ,
K E A A I O 5 : E N T PA
142
(3) () , .
5.3
- 5.8,
.
( ).
9
74
65
65
52
18
52
()
18
()
65
65
52
18
52
18
6
()
7
()
()
(), 9,
(74), (). 65 >
48 ( 48 ) 9 < 65, 9 65. , (). , 52 > 18 9 < 52, , 9 52
. , (), 9 > 6 9 > 7,
9.
E N T PA
, 5.6 (H-DIAGRAFH).
,
(P, , AD, DD) (SUCCESS).
() , . AD DD
, , . SUCCESS ,
.
,
( 1),
.
P, AD, DD SUCCESS ( 2).
, while ( 3-9). if ( 4-8). ( 4-5) , ( 4),
( 5).
if ( 6-8) , .
(
, 6),
( 7 8). 9
AD DD ().
D
. , AD = ,
, ,
( 10), ( 11). , ( 12).
143
K E A A I O 5 : E N T PA
144
5.6: IAPAH E PO
: () -, ().
: .
().
H-DIAGRAFH(H, N)
1 X H[1], H[N], N N-1
2 P 1, AD 2, DD 3, SUCCESS FALSE
3 while (AD < ) and (not SUCCESS)
4
if ( H[AD]) and ( H[DD])
5
then H[P] , SUCCESS TRUE
6
else if H[DD] H[AD]
7
then H[P] H[AD], P AD
8
else H[P] H[DD], P DD
endif
endif
9
AD 2*P, DD 2*P+1
endwhile
10 if (AD = N) and (Z < H[AD])
11
then H[P] H[AD], P AD
12 H[P]
5.3
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
() -
.
() 75.
93
73
84
69
13
51
74
12
38
48
20
52
E N T PA / A E K AT H O P I E E N T P N
5.5 A
5.3.5 , , . ,
, .
, ,
. ,
(balanced trees).
f(n) = O(logn). :
(height
balanced trees)
(weight balanced trees).
5.5.1
. ,
, (rebalance) .
(single rotation) (double rotation).
AVL (AVL trees) - (redblack trees). AVL,
(AdelsonVelskii Landis).
(almost balanced)
(completely perfectly balanced). ,
AVL,
(1). , ,
( ) , 1, 0 1.
145
K E A A I O 5 : E N T PA
146
- ,
. () , ,
: () M () .
(2). (0 1), .
5.5.2
, .
,
. [a].
.
. , ,
. , , . . ,
. , (
) . , ,
.
.
,
.
. , , , , -
A E K AT H O P I E E N T P N / Y N O H
.
, : , ,
.
.
f(n) = O(logn) (, ), .
. .
.
-
. , . .
,
.
.
, .
, ,
, .
, . AVL,
. ,
, , .
147
K E A A I O 5 : E N T PA
148
O
1. . , , . ', ART of TEXT, 2
, 1992.
5 , AVL.
2. . , , ,
/ & , ,
1994.
4.2.1 AVL, - BB[a]. , 1
,
- .
3. T. H. Cormen, C. E. Leiserson R. L. Rivest, Introduction to
Algorithms, McGraw-Hill, 1996 ().
14 Red-Black Trees
- .
4. T. A. Standish, Data Structures, Algorithm and Software Principles,
Addison-Wesley, 1994.
9.7 Binary Search Trees Analyzing
Performance Characteristics . , AVL Trees and Their
Performance AVL,
.
5. M. A. Weis, Data Structures and Algorithm Analysis, Benjamin/
Cummings, 2nd Edition, 1995.
4 Trees
Pascal . 4.4 AVL Trees
AVL.
. ,
.
, :
,
,
.
6
6.1
6.2
K E A A I O 6 : I ATA H
150
6.3
6.4
, , , . (
)
.
( ) . () , .
,
. ,
.
,
, .
, .
, . .
,
, .
, , .
6.1 E
(sorting)
, , , ,
EIAIKE ENNOIE
151
. /, ,
.
, n :
n 1, 1, , n,
:
1 2 n.
. ,
.
(sorting algorithms)
. :
(bubble sort)
(insertion sort)
(selection sort)
(quicksort)
(merge sort)
(heapsort)
(radix sort)
E . O (internal sorting
algorithms), (external sorting algorithms). ( ) /,
( )
/. .
: , , .
,
, () (-
K E A A I O 6 : I ATA H
152
1.3
).
:
() (comparisons),
,
() (interchanges), ,
() (assignments),
.
,
,
f(n) = C(n) + (n), C(n) (n)
. ,
,
, f(n) = C(n).
, .
,
A[I] A[J]
A[I] A[J]
Y A[I], A[I] A[J], A[J] Y,
, ,
.
6.2
:
(1) -
I ATA H E I O H
153
,
.
(2) , n-1 , .
(3) (2) , n-2 , .
.
.
.
(n-1) n-2 ,
(2) ,
n-1 .
, n-1
.
. ,
.
65, 42, 25, 85, 14,
56 33. ,
.
6.1
K E A A I O 6 : I ATA H
154
A2Q
A3Q
A4Q
A5Q
A6Q
A7
1
A1Q
65Q
42Q
25Q
85Q
14Q
56Q
33
2
14Q
42Q
25Q
85Q
65Q
56Q
33
3
14
25Q
42Q
85Q
65Q
56Q
33
4
14
25
33
85Q
65Q
56Q
42
5
14
25
33
42Q
65Q
56Q
85
6
14
25
33
42
56Q
65Q
85
14
25
33
42
56
65
85
,
, ,
. , 1
, 2 2 ,
3 3 ...
,
(). , 6.1 (MINSTOIXEIO). (
1.1,
1.2.2 , .)
I ATA H E I O H
155
: (), (L)
(NU) ().
: (X) (MIN) ()
.
MINSTOIXEIO(A, NL, NU)
1 X NL, MIN A[NL]
2 for I NL to NU
3
if M > A[I]
4
then X I, MIN A[I]
endif
endfor
{ }
{ }
{ }
{ }
, 6.1 (DIAT-EPILOGHS).
6.1: IATAH EIOH
: () () .
: ,
.
DIAT-EPILOGHS(A, N)
1 for K 1 to N-1
2
MSTOIXEIO (A, K, N)
3
A[K] A[X]
endfor
{ }
{ }
{ }
,
. ,
, for
( 1-3).
, 6.1
(MINSTOIXEIO) ( 2). ( 1),
K E A A I O 6 : I ATA H
156
. ,
( 3).
, .
. , ,
.
,
MINSTOIXEIO n - , ()
(). n 1 , n - 2 ... :
n(n - 1) n2 n
=
- =
f(n) = C(n) = (n-1) + (n-2) + + 2 + 1 =
2
2 2
f(n) = (n2).
6.3
(quicksort) .
(divide
and conquer). / ,
, ,
, ...,
.
:
(1)
(pivot)
-
. , ,
- .
P H O P H I ATA H
(2) (1)
..., . .
.
-. , ,
.
. ,
.
(partitioning) .
,
. .
:
(1)
, .
(2) , .
(3) ,
.
(4) (2) (3) ,
.
157
K E A A I O 6 : I ATA H
158
6.2.
20, 78, 32, 12, 65,
15, 9 38.
, -
, ,
,
, .
B
A2Q
A 3Q
A 4Q
A5Q
A6Q
A7Q
A8
1
A 1Q
20Q
78Q
32Q
12Q
65Q
15Q
9Q
38
2
20Q
78Q
32Q
12Q
65Q
15Q
9Q
38
3
20Q
9Q
32Q
12Q
65Q
15Q
78Q
38
4
20Q
12Q
9Q
15Q
12Q
65Q
32Q
78Q
38
9Q
15Q
20Q
65Q
32Q
78Q
38
1.
,
, .
.
78 ( 78 > 20) 9 ( 9 < 20).
3, . 32 ( 32 > 20) 15
( 15 < 20). 4,
, 65 12, .
, , ,
12, . , , .
P H O P H I ATA H
159
, , ( ), .
.
, 6.2 (DIAT-DIAXORISMOS).
6.2: IAXPIMO INAKA
: (), (L)
(NU) ().
: . .
DIAT-DIAXORISMOS(A, NL, NU)
1
2
3
4
5
6
7
8
X A[NL], AD NL+1, DD NU
while AD < DD
while (AD NU) and (A[AD] < X)
AD AD + 1
endwhile
while (DD NL) and (A[DD] > X)
DD DD - 1
endwhile
if AD < DD
then A[AD] A[DD]
endif
endwhile
A[NL] A[DD], P DD
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ -}
160
K E A A I O 6 : I ATA H
, ( 56) . if ( 7-8) .
, 9
.
, , .
, . , ,
. , , ,
.
, 6.2 (DIAT-GRHGORH).
, (SL, ) (SU, ).
()
,
. ()
SL, SU.
, .
.
( 1-4).
2 () , .
while ( 5-14), ( 0).
( 6-7).
( 8), , .
if.
, ( 9).
P H O P H I ATA H
161
, ( 10-11). (DIATDIAXORISMOS) ,
- 1 ,
NL. ,
if ( 12)
, , (
13-14). , + 1 NU .
6.2: PHOPH IATAH
: (), (L)
(NU) ().
: .
.
DIAT-GRHGORH (A, NL, NU)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
T0
if NL < NU
then T 1
SL[1] NL, SU[1] NU
endif
while T 0
NL SL[T], NU SU[T]
TT-1
DIAT-DIAXORISMOS(A, NL, NU)
if NL < - 1
then T T + 1
SL[T] NL, SU[T] - 1
endif
if + 1 < NU
then T T + 1
SL[T] + 1, SU[T] NU
endif
endwhile
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
K E A A I O 6 : I ATA H
162
6.2.
6.2, .
6.3 (DIATGRHGORH) . 6.3 (DIATDIAXORISMOS). ,
, SL SU, (
).
B
A 1Q
20Q
A 3Q
A 4Q
A5Q
A6Q
A7Q
A8
78Q
32Q
12Q
65Q
15Q
9Q
38 SL:[1]QQ
SU:[8]
SL:[ ]QQ
SU:[ ]
SL:[1, 5]Q
SU:[3, 8]
SL:[1]QQ
SU:[3]
SL:[1, 5]Q
SU:[3, 6]
1
12Q
9Q
15Q
20Q
65Q
32Q
78Q
2
3
4
A2 Q
QQQQQ
32Q
QQQQQ
32Q
9Q
12Q
15
9Q
12Q
15Q
20Q
32Q
38Q
65Q
38
38Q
65Q
38
78 SL:[1]QQ
SU:[3]
SL:[1]QQ
SU:[3]
SL:[ ]QQ
SU:[ ]
SL:[ ]QQ
SU:[ ]
78
. (1, 8). 1
. ,
,
(1, 3) (5, 8), . (
2)
, -
P H O P H I ATA H
163
.
, , (5, 6) . ,
, ( 4).
, . ,
1,
( 4).
, 6.3 (DIAT-GRHGORHANAD).
, . , ,
.
6.3: PHOPH IATAH ME (ANAPOMH)
: (), (L)
(NU) ().
: .
.
DIAT-GRHGORH-ANAD (A, NL, NU)
1
2
3
4
if NL < NU
then DIAT-DIAXORISMOS(A, NL, NU)
DIAT-GRHGORH-ANAD (A, NL, DD-1)
DIAT-GRHGORH-ANAD (A, DD+1, NU)
endif
{ }
{ }
{ }
{ }
() ( 1), ( 2-4),
:
( 2) ( 3)
K E A A I O 6 : I ATA H
164
( 4) .
,
... () ()
( 1). (resuming) ,
, .
, , .
.
. , , n
.
,
n-1 . ,
( ),
, n-1 ..,
n(n + 1) n2 n
=
+
C(n) = n + (n-1) + + 2 + 1 =
2
2 2
. ,
f(n) = (n2).
,
.
,
f(n) = (n logn),
.
, .
, .
,
:
P H O P H I ATA H
165
2 = 21
(1) 1
1 = 20 -
()
(2) 2 4 = 22 2 = 21 ()
(3) 4 8 = 23 4 = 22 ()
(4) 8 16 = 24 8 = 23 ()
(k) 2k-1 2k
2k-1
()
, 20+21+22+ +2k-1 =
k -1
2 = 2 -1 2
i
i =0
( k) , k=log(2k) .
, n logn .
n , n logn .
f(n) 1.39 n logn.
6.2
. , . .
6.2.
6.1
,
,
( n),
6.2
K E A A I O 6 : I ATA H
166
6.2
. 6.2 ,
(.. 16),
.
6.1.
6.4
(heapsort)
,
.
. ( 5.4 - .)
:
(1) - ,
.
(2) (1) ,
.
, 6.4 (DIAT-SOROU).
. for ( 1-2)
. () , H-EISAGWGH ( 5.5), -1
, ,
, . , .
, ... , .
I ATA H P O Y
167
,
. ,
.
6.4: IATAH POY
() ().
: .
.
DIAT-SOROU(A, N)
1
2
3
4
5
for I = 1 to N-1
H-EISAGWGH(A, I, A[I+1])
endfor
while N > 1
H-DIAGRAFH(A, N)
A[N+1] X
endwhile
{ }
{ }
{ }
{ }
{ }
K E A A I O 6 : I ATA H
168
6.3
: 45, 30, 50, 20, 75, 65.
.
,
.
, , . ,
( = 1)
,
(45). ,
. ( = 2) (50) , ,
..., .
. [ = 6(5)] (75) , , ( 5).
4,
5, .
( 3).
65
.
,
( 5),
.
, ,
, .
I ATA H P O Y
169
1 AH
I
A1Q
45Q
A2Q
A 3Q
A4Q
A5Q
A 6
30Q
50Q
20Q
75Q
65Q
1
45
30
50Q
20Q
75Q
65Q
2
50
30
45Q
20Q
75Q
65Q
3
50
30
45
20Q
75Q
65Q
4
75
50
45
20
30Q
65Q
5
75
50
65
20
()
30
45QQ
2 AH
N
A1Q
6(5) 75Q
A 2Q
A 3Q
A4Q
A5Q
A 6
50Q
65Q
20Q
30Q
45Q
5(4) 65QQ
50Q
45Q
20Q
30Q
75Q
4(3) 50Q
30Q
45Q
20Q
65
75Q
3(2) 45Q
30Q
20Q
50
65
75
2(1) 30Q
20
20Q
45
50
65
75Q
30
45
50
65
( )
75
. ,
f(n) = (n logn).
.
K E A A I O 6 : I ATA H
170
1
.
, ,
5.2.1 ,
h logn. , n C(n) nlogn .
f(n) = (nlogn).
2
,
, (
). (.. 9
() 5.3.) h logn, n ,
2logn . , n
( n ) C(n) = 2nlogn.
f(n) = (nlogn).
f(n) = (n logn),
,
.
6.3
( 6.4)
.
6.3.
( )
n () .
I ATA H P O Y / Y N O H
/.
,
/ ,
.
( ) ,
, ,
, , , , .
(), .
n-1 n .
, ,
. f(n) = (n2).
,
.
, .
...,
. f(n) = (nlogn)
f(n) = (n2) .
, - . .
.
. , () , , .
f(n) = (nlogn) .
1. . , , . , ART of TEXT, 2
, 1992.
171
172
K E A A I O 6 : I ATA H
9
().
9.12 ,
.
2. T. A. Standish, Data Structures, Algorithm and Software Principles,
Addison-Wesley, 1994.
13 Sorting .
13.1 Introduction and Motivation ,
,
. , 13.4 Divide-and-Conquer
Methods, Quicksort, Analysis of
Quicksort,
.
3. M. A. Weis, Data Structures and Algorithm Analysis, Benjamin/
Cummings, 2nd Edition, 1995.
7 Sorting,
7.7, .
Pascal
. 7.7.5 Analysis
of Quicksort .
A A N T H E I A K H E N AY T O A I O O H H K E A A I O Y 1
173
1.1
, !
( )
.
.
, . , 1.1.4
.
,
.
1.2
.
MESOSOROS (A, N)
1
2
3
4
5
SUM 0
for K 1 to N
SUM SUM + A[K]
endfor
MO SUM/N
print MO
{ }
{ }
{ }
{ }
{ }
OME EOMENN
174
, ,
! , . ,
.
,
while, for,
. , .
,
. (
3 SUM). 1.4
.
1.3
,
n ,
. .
( 3): n ( 3 n )
( 1):
1 ( 1 )
( 2):
n ( n )
( 3):
n ( 3 n )
( 4):
1 ( 4 )
3n + 2
f(n) = 3n + 2.
2 ( for)
.
, . , , .
A A N T H E I A K H E N AY T O A I O O H H K E A A I N 1 & 2
1.4
) 0.5.n2, n2 = n.n > n.logn (
n > logn). f(n) = O(n2).
,
! , 1.6.
()
f n =
3n 5 log n 1 3
5 log n 1 1
+
+
= 1 +
+ .
2n
2n
2n 2
2 n
2 n
3
1
1 ,
< 1 ( n > 1)
2
n
log n
< 1 ( n > logn).
n
, f(n) = O(1).
(). ,
. ! ,
1.6.
O (
3
1
2
log n
).
n
.
2.1
) ,
, ,
. , , ,
1 = {1, , 5}, 2 = {1, 2, 3}, 3 = {1988, , 1997}.
:
1 = 5, 2 = 3 ( )
175
OME EOMENN
176
(2.18)
c3 = L, c2 = 3 c3, c1 = 2 c
c0 = bA - c1 nl1 - c2 nl 2 - c3 nl3
.
(2.19) :
c3 = 2, c2 = 10 2 = 20, c1 =3 20 = 60
c0 = 200 - 60 1 - 20 1 2 1988 = -3856
, (2.18)
loc( H i1 ,i2 ,i3 ) = -3856 + 60 i1 + 20 i2 + 2 i3
. ,
,
n- ( 2.11). , ! , 2.1.5
2.2 , .
) i1 = 3, i2 = 2 i3 = 1990
loc(3,2,1990) = -3856 + 60 3 + 20 2 + 2 1990 = 344.
A A N T H E I A K H E N AY T O A I O O H H K E A A I O Y 2
177
1998
1989
...
5.25
5.40
1988
4.85
4.90
4.95
1 4.80
4.70
4.75
4.70
4.75
4.80
5.00
4.80
4.90
4.60
4.65
4.55
3
5.45
...
(),
. ,
. , , , .. 2, 3, 1990 3, 2,
1990. .
,
( ). , .. .
.
, ,
, (pages).
2.2
) Ai,j = Aj,i i, j. , ,
() , .
. , ,
. (i = j)
(i j),
. ,
( 2.13)
OME EOMENN
178
S=
n(n + 1)
.
2
,
n(n + 1) n(n - 1)
=
(2.20)
2
2
, L .
K = n2 -
,
. , !
, ! ,
2.1.6 .
.
) ,
,
. ,
, (2.14)
(2.15).
) , , (2.16). ,
(2.17).
)
k DA (i, j)
(j, i). , :
A A N T H E I A K H E N AY T O A I O O H H K E A A I O Y 2
1
2
3
4
5
if I < J
then 0
else K ((I * (I-1)/2) + J)
endif
DA[K]
print
1
2
3
4
if I J
then K ((I * (I-1)/2) + J)
else K ((J * (J-1)/2) + I)
endif
DA[K] X
(i, j) (j, i)
k, I, J 2 3.
, ,
. ,
.
2.1.6
.
2.3
,
, 2.1, 2.1.
,
. .
EURESH (TRUE)
(FALSE) .
, .
, ,
179
OME EOMENN
180
, . , . ,
,
.
2.3 (GRAMANAZHTHSH-OLWN).
: (), () ().
: , . .
GRAM-ANAZHTHSH(A, , X)
1
2
3
4
5
6
7
8
I 1 , EURESH FALSE
while (not EURESH) and (I )
if A[I]=X
then EURESH TRUE
else I I + 1
endif
endwhile
if EURESH=TRUE
then print I
else print
endif
{ }
{ }
{ }
{ }
{ }
{ }
{ }
,
( ) ( 2) , . ,
,
.
,
. , .
A A N T H E I A K H E N AY T O A I O O H H K E A A I O Y 2
181
, , .
while ( 2-6), .
( 6), if ( 3-5),
2.1. ,
! , .
.
: (), () ().
: , , ,
. , .
GRAM-ANAZHTHSH-OLWN(A, , X)
1
2
3
4
5
6
7
8
I , EURESH FALSE
while I
if A[I]=X
then EURESH TRUE
print I
endif
II+1
endwhile
if EURESH=FALSE
print
endif
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
2.4
2.2.
: .
, (). ,
.
OME EOMENN
182
: (), () ().
: , , , . , .
TRIAD-ANAZHTHSH (A, , X)
1
2
3
4
5
6
7
9
10
11
12
13
14
NL 1, NU
T1 [(2*NL+NU)/3], T2 [(NL+2*NU)/3]
while (A[T1] X) and (A[T2] X) and (NL NU)
if A[T2] < X
then NL T2 + 1
else if A[T1] < X
then NL T1+1, NU T2-1
else NU T1-1
endif
endif
T1 [(2*NL+NU)/3], T2 [(NL+2*NU)/3]
endwhile
if A[1] = X
then print 1
else if A[2] = X
then print 2
else print
endif
endif
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{M }
:
, ( ).
A L NU
() , 1 = NL + (NU - NL)/3 = (2NL + NU)/3,
T2 = NU - (NU - NL)/3 = (NL + 2NU)/3
[NL, T1] (), [T1, T2] () [T2,
NU] (). ' ,
A A N T H E I A K H E N AY T O A I O O H H K E A A I N 2 & 3
. , .
,
while. , ) , . NL > NU (), )
, [1] = [2] = . ,
while [1]
[2] NL NU. ,
. ,
! , , .
,
.
:
) > [2], , , . ,
[2 + 1, NU], [2] ,
while.
) > [1] < [2], ,
[1 + 1, 2 - 1] ,
[1], [2] ,
.
) , < [1],
, [NL, 1 - 1].
.
' , ! , , , , .
- , .
3.1
3.5 ,
, ,
183
OME EOMENN
184
. , , . ,
.
.
3.2. , !
. ,
. , ,
, ' ,
, ' .
( )
. ,
, ,
.
3.1 (DIAT-SL-EISAGWGH).
1-3. while , '
, ( 3), (
< L[]), '
( > T). , ! .
, ,
.
A A N T H E I A K H E N AY T O A I O O H H K E A A I O Y 3
185
: (L), (),
(T) ().
: , . ,
,
.
DIAT-SL-EISAGWGH(L, N, T, X)
1 I1
2 while (I T) and (L[I] < X)
3
I I+1
endwhile
4 KT
5 while K I
6
L[K+1] L[K]
7
K K-1
endwhile
8 L[I] X
9 T T+1
{
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
, 4-9, 3.2,
( 1-2),
. .
,
. , ,
.
, , ,
.
3.2
, 3.3. ,
, . ,
OME EOMENN
186
, 2.3
, , 3.3.
, !
. , .
.
: (L), (T)
().
: , , . , ,
.
SL-DIAGRAFH-OLWN(L, T, X)
1 I 1 , EURESH FALSE
2 while I
3
if L[I]=X
4
then EURESH TRUE
5
for K = I to T-1
6
L[K] L[K+1]
endfor
7
T T-1
8
else I I + 1
endif
endwhile
9
if EURESH=FALSE
10
print
endif
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
,
, ...
, ! . , , -
A A N T H E I A K H E N AY T O A I O O H H K E A A I O Y 3
, , , .
.
,
3.3 (SL- DIAGRAFH-OLWN). ,
2.3 ( L ), , ( 3), ( 5-7),
( 3.3).
2.3, EURESH.
3.3
, ' ,
- - , . ,
. ,
.
, < . , , -
- -
.
- , . ,
! .
, 3.4.
- 3.4.
,
3.3, .
while ( 2-6) 3.4. , ,
, ,
187
OME EOMENN
188
if ( 3-4) -
-.
, ! . , , , .
()
, .
.
.
() . ,
, ( )
( 8). ,
( 9). ,
( ) ( 10). ,
. ,
= NIL 11
. , ! , 3.3
.
A A N T H E I A K H E N AY T O A I O O H H K E A A I O Y 3
189
: (L) (, ).
: , - - , . , ,
.
DL-ENALLAGH(L, K, M)
1 P L , 1
{}
2 while (P NIL) and ( )
{ }
3
if I = K
{ }
4
then PK PM
{ }
endif
5
PM DEIKTHS(KOMBOS(PM))
{ }
6
I I+1
{ }
endwhile
7
if (PM NIL)
{ }
8
then X STOIXEIO(KOMBOS(PK))
9
STOIXEIO(KOMBOS(PK)) STOIXEIO(KOMBOS(PM))
10
STOIXEIO(KOMBOS(PM)) X
11
else print O
{ }
endif
3.4
3.6. ,
, , , . ,
.
, .
. ,
OME EOMENN
190
. , , . , !
,
. ! .
: (L) ().
: , ,
. , , .
DL-DIAGRAF-S(L, X)
1 PL
{}
2 while (P NIL) and (STOIXEIO(KOMBOS(P)) X)
{}
3
PI P
{}
4
P DEIKTHS(KOMBOS(P))
{}
endwhile
5
if P = NIL
{}
6
then print
{}
7
else
DEIKTHS(KOMBOS(PI)) DEIKTHS(KOMBOS(P)) {}
endif
3.4 (DL-DIAGRAFH-S).
, . ( 1: P L)
while ( 2-4).
( STOIXEIO(KOMBOS(P)) X)
( PNIL), )
(
DEIKTHS(KOMBOS(P))).
(
, if
( 5-7). while
, if .
A A N T H E I A K H E N AY T O A I O O H H K E A A I N 3 & 4
, 3.6 . , 3.6 . ,
( = NIL). , 3 ,
.
4.1
( 4.1),
.
( 4) (
4.4). , ( ). ,
. , 4.1,
.
4.1 (DSDIAGRAFH-KP). while (
2-5),
( 4). ,
( 5), ( ,
), , ( ) . ( 8). , ! ,
.
191
OME EOMENN
192
E : O (S)
(K).
: E, /
. E, K .
I 1
while (S / NIL) and (I/K)
PI S
S DEIKTHS(KOMBOS(S))
I I+1
endwhile
if I = K + 1
then print STOIXEIO(KOMBOS(PI))
else print STOIXEIO(KOMBOS(PI))
print 'AEIA TOIBA'
endif
{A }
{ }
{E }
{E }
{E }
{ }
{E K - }
{E }
{M }
> S = NIL (
). , , if ( 6-9). ,
( 6), ,
. , -
( 7). ,
,
( 8) ( 9).
, !
, .., 7,
if, ,
. ,
.
4.1,
.
A A N T H E I A K H E N AY T O A I O O H H K E A A I O Y 4
4.2
. ()
.
, . .
, :
1. ,
1.1 ,
1.2 , (
)
2. , (
)
3.
1.1,
3.1 ,
3.2 , ( )
, , , !
,
. ,
( 4.4.2).
4.3
.
.
193
OME EOMENN
194
. ,
, . .
F
Q
3
S
3
2
1
,
.
, , !
, ,
.
4.3 (SQANASTROFH) . - ( J) (S, T). for ( 2-4). , ( 3)
, , ( 4). ,
.
! while, ,
3 4 . , F
R.
A A N T H E I A K H E N AY T O A I O O H H K E A A I O Y 4
195
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
for ( 6-9) . ,
( 5). () (
6) (FX)
. , ( 7)
( 8) ( 9).
, ! while,
. ,
.
5.1
:
OME EOMENN
196
(1) .
, , , .
.
, . ,
.
(2)
.
- - ,
, , , ,
. , ,
. , .
. , ! , . .
(3) . (2)
, , , , ,
, .
, . , .
, ... ,
.
, ,
! , . .
A A N T H E I A K H E N AY T O A I O O H H K E A A I O Y 5
5.2
() , . :
(), ,
.
(), > ,
.
(), < , .
M
K
197
. , .
, . .
(), < ,
OME EOMENN
198
, , . ,
> , .
(), > ,
. , > , T
.
, < , , , . ,
> , . ,
< , E .
, > , , , . , < , M .
, .
, . , , .
, ! , .
, .
() ( 3 ). ,
.
: , , , , , , , , , , , .
, .
() . . , ! , .
.
.
:
() . (),
( 1
).
A A N T H E I A K H E N AY T O A I O O H H K E A A I O Y 5
199
() .
(1),
,
(2).
I
M
K
H
(2)
(1)
5.3
() , (1) ,
, (2) ,
, ,
( )
, (3)
.
, . ,
.
.
H1
H2
H3
H4
H5
H6
H7
H8
H9
H10 H11
H12
93
84
73
69
74
38
52
13
51
12
20
48
, 2h+1 - 1= 23+1 -1=24 -1= 16 -1 = 15,
h = 3 .
OME EOMENN
200
. ,
. , 5.2.1
.
:
(93) (84, 73). (, )
84 (69, 74). 73 (38, 52)
... , ! ,
. , ,
.
()
( 5.4.2 ), :
(1) (75)
(),
.
(2)
:
(75)
(38). , , 75 (75 > 38
75 > 20), 73 (73 < 75).
(75)
(73). , 75 (75 > 73
75 > 52), .
, . , ! , 5.2 ( ), .
A A N T H E I A K H E N AY T O A I O O H H K E A A I O Y 5 & 6
201
93
93
73
52
38
20
75
93
73
52
75
()
20
38
75
()
73
20
52
38
()
, .
H1
H2
H3
H4
H5
H6
H7
H8
H9
H10 H11
H12
93
84
73
69
74
38
52
13
51
12
48
20
75
93
84
73
69
74
75
52
13
51
12
48
20
38
93
84
75
69
74
73
52
13
51
12
48
20
38
, ! , .
5.2 .
6.1
, -
OME EOMENN
202
, .
, . , ! () .
, , , : N ,
. .
: (), (L)
(NU) ().
: . .
DIAT-GRHGORH (A, NL, NU)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
T0
if NL < NU
then T 2
S[1] NL, S[2] NU
endif
while T 0
NL S[T], T T - 1
NU S[T], T T - 1
DIAT-DIAXORISMOS(A, NL, NU)
if NL < - 1
then T T + 1, S[T] NL
T T + 1, S[T] - 1
endif
if + 1 < NU
then T T + 1, S[T] + 1
T T + 1, S[T] NU
endif
endwhile
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
A A N T H E I A K H E N AY T O A I O O H H K E A A I O Y 6
6.1 .
, ()
() , . ,
2.
. , ! , .
6.2,
: S[1, 8],
S[ ], S[1, 3, 5, 8], S[1, 3], S[1, 3, 5, 6], S[1, 3], S[1, 3], S[ ], S[ ]. .
6.2
6.2 .
:
( ), () , , ,
.
6,
, ( 8).
.
, ! ,
. ,
6.2, .
, ,
6 7, , , , , .
203
OME EOMENN
204
, .
, , 6.2 (DIATGRHGORH-EPILOGHS).
5-7 .
6.2.
{ }
{ }
{ }
{ }
{ }
,
6.1. 6.1 A, NU-NL. ,
() 1
, [1, ], [NL, NU], NL > 1
NU < N. , 6.1
. ,
! , .
, 6.1
A A N T H E I A K H E N AY T O A I O O H H K E A A I O Y 6
205
{ }
{ }
{ }
6.3
,
.
, ( 5.4.1 ), , ,
, .
,
() .
.
, , . ,
, . ,
.
() .
, .
,
6.4. , . 6.3,
2 , 65 -
OME EOMENN
206
5,
75 6 , 5,
65 6.
.
, ! .
,
6.4.
6.4 ,
. 6.3 (DIATSOROU-D), 6.4.
4 5 . ( 6-9) for,
( 10). ,
( 1). , 3 ( 4, > 0), , ,
.
A A N T H E I A K H E N AY T O A I O O H H K E A A I O Y 6
207
: () ().
: .
.
DIAT-SOROU-D(A, N)
LN
for I = 1 to N-1
H-EISAGWGH(A, I, A[I + 1])
endfor
4 while N > 0
5
H-DIAGRAFH(A, N)
6
M L - (N + 1)
7
for J 1 to M
8
K L - (M - J)
9
A[K - 1] A[K]
endfor
10
A[N + 1] X
endwhile
1
2
3
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
1 ,
. 6
( ). for ( 9).
. , ,
, .
, .
. ,
6.3 .
OME EOMENN
208
.
.
.
2 AH
N
A 1Q
6(5) 75Q
A 2Q
A 3Q
A4Q
A5Q
A 6
50Q
65Q
20Q
30Q
45Q
5(4) 65QQ
50Q
45Q
20Q
30Q
75Q
4(3) 50Q
30Q
45Q
20Q
75
65Q
3(2) 45Q
30Q
20Q
75
65
50Q
2(1) 30Q
20Q
75
65
50
45Q
1(0) 20Q
75
65
50
45
30
65
50
45
30
20
75
A A N T H E I PA T H P I O T H T N
2.1
, , . , , .. , .
, . , ,
.
() ,
, ().
,
, , (, .. ),
, /. .
,
, ( 1.1 1.1.4).
'', -- .
3.1
.
:
, , .
,
. .
209
OME EOMENN
210
.
. .
, .
,
. ,
,
, . , , (dynamic memory allocation).
, , , , .
(1),
(n), n ,
. ,
, ,
(1).
, , ,
. , , , (1),
, , (n)
. , , , (n).
A A N T H E I PA T H P I O T H T N
,
, .
, , . n > T.S/(D + S), n , T
, S D ,
.
,
, .
211
API OPN
(Algorithm):
() /.
(Sorting algorithm):
()
.
(Search):
.
(Data structure representation):
/.
(Higher-level structure): .
(Singly linked list):
, (),
() .
(Time efficiency): .
(Space efficiency):
.
(Abstract data type): .
(Weight balanced tree):
.
(General list): () .
(General tree): .
(Pseudocode):
.
(Linear search): -
213
OME EOMENN
214
( ), ,
.
(Linear structure):
( )
,
.
(Quicksort):
( ) , , .
(Index):
.
(Pointer):
/.
- (Heap): .
(Deletion):
.
(Traversal):
.
(Flow control structure):
.
if (If structure):
.
(Selection sort): n-1
( n).
.
for (For structure):
API OPN
.
(Row-major order):
/ .
(Column-major order):
/ .
(Heapsort):
.
while (While structure): .
(Double-ended queue Deque):
.
(Data structure): ( ) .
(Sequential access structure):
, , . ,
.
(Random access structure): .
(Binary search): ,
(
) .
(Binary search tree):
-
215
OME EOMENN
216
.
(Dynamic structure):
( )
.
(Two-dimensional array): .
(Record):
, .
(Insertion):
.
(Interchange):
.
(Inorder traversal):
: .
(External sorting):
( )
/.
(Internal sorting): ( ) /.
(Heterogeneous structure):
.
(Fundamental structure):
.
(Balanced tree): .
(Assignment):
.
API OPN
217
OME EOMENN
218
.
(Homogeneous structure):
.
(Queue):
. FIFO.
(Priority queue):
, . HPIFO.
(Upper triangular array):
.
(Field): .
(Array of records): .
(Complete tree): , ,
.
(Multi-dimensional array):
n (n > 1).
(Complexity):
.
(Polish notation): ( )
(, ).
(Operations):
.
(Preorder traversal):
.
API OPN
(Root): ,
.
(Static structure):
( ) .
(Stack):
() . LIFO.
(Comparison):
.
(Symmetric array):
.
(Array mapping function):
( )
.
(Complexity function):
.
(Linked representation):
().
(Link): . .
(Contiguous representation):
.
.
(Index set):
.
219
OME EOMENN
220
(Rectangular array):
.
(Tridiagonal array):
,
() , ( ) (
).
(Data type):
.
(Subtree):
.
(Height balanced tree):
.
B I B I O PA I A
., , , , 1993.
., , , , , 1987.
., , . , , ART of
TEXT, 2 , 1992.
. ., , ,
, 1994.
Wirth ., & , , , 1990.
221
222
OME EOMENN