data structures and algorithms 12...3 ming zhang “data structures and algorithms” basic concepts...
TRANSCRIPT
![Page 1: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/1.jpg)
Data Structures and Algorithms(12)
Instructor: Ming ZhangTextbook Authors: Ming Zhang, Tengjiao Wang and Haiyan Zhao
Higher Education Press, 2008.6 (the "Eleventh Five-Year" national planning textbook)
https://courses.edx.org/courses/PekingX/04830050x/2T2014/
Ming Zhang "Data Structures and Algorithms"
![Page 2: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/2.jpg)
2
目录页
Ming Zhang “Data Structures and Algorithms”
Chapter 12
Advanced Data
Structure
Chapter 12 Advanced Data Structure
• 12.1 Multidimensional array
• 12.1.1 Basic Concepts
• 12.1.2 Structure of Array
• 12.1.3 Storage of Array
• 12.1.4 Declaration of Array
• 12.1.5 Special Matrices Implemented by Arrays
• 12.1.6 Sparse Matrix
• 12.2 Generalized List
• 12.3 Storage management
• 12.4 Trie
• 12.5 Improved BST
![Page 3: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/3.jpg)
3 Ming Zhang “Data Structures and Algorithms”
Basic Concepts
• Array is an ordered sequence with
fixed number of elements and type.
• The size and type of static array
must be specified at compile time
• Dynamic array is allocated memory
at runtime
12.1 Multidimensional Array目录页
Chapter 12
Advanced Data
Structure
![Page 4: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/4.jpg)
44 Ming Zhang “Data Structures and Algorithms”
Basic Concepts
• Multidimensional array is an extension of one-
dimensional array (vector).
• Vector of vectors make up an multidimensional
array.
• Represented as
ELEM A[c1..d
1][c
2..d
2]…[c
n..d
n]
• ci and d
i are upper and lower bounds of the
indices in the i-th dimension. Thus, the total
number of elements is:
n
i
ii cd1
)1(
12.1 Multidimensional Array目录页
Chapter 12
Advanced Data
Structure
![Page 5: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/5.jpg)
55 Ming Zhang “Data Structures and Algorithms”
d1=3,d2=5
d1
d2
a[1][1]
d1
d2
d3
a[1][3][5]
Structure of Array
2-dimensional array 3-dimensional array
d1[0..2], d2[0..3], d3[0..1] are the three dimensions respectively
d1=3,d2=4, d3=2
12.1 Multidimensional Array目录页
Chapter 12
Advanced Data
Structure
![Page 6: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/6.jpg)
6 Ming Zhang “Data Structures and Algorithms”
Storage of Array
• Memory is one-dimensional, so arrays are
stored linearly
• Stored row by row (row-major)
• Stored column by column (column-major)
X=
1 2 3
4 5 6
7 8 9
12.1 Multidimensional Array目录页
Chapter 12
Advanced Data
Structure
![Page 7: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/7.jpg)
7 Ming Zhang “Data Structures and Algorithms”
Row-Major in Pascal
a112
a113
… a11n
a122
a123
… a12n
a1m2
a1m3
… a1mn
…………………………
a211
a212
a213
… a21n
a221
a222
a223
… a22n
…………………………
a2m1
a2m2
a2m3
… a2mn
┇a
k11a
k12a
k13… a
k1n
ak21
ak22
ak23
… ak2n
…………………………
akm1
akm2
akm3
… akmn
a111
a121
a1m1
a[1..k,1..m,1..n]
12.1 Multidimensional Array目录页
Chapter 12
Advanced Data
Structure
![Page 8: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/8.jpg)
8
目录页
Ming Zhang “Data Structures and Algorithms”
Chapter 12
Advanced Data
Structure
Column-Major in FORTRANa111 a211 a311 … ak11
a121 a221 a321 … ak21
…………………………a1m1 a2m1 a3m1 … akm1
a112 a212 a312 … ak12
a122 a222 a322 … ak22
…………………………a1m2 a2m2 a3m2 … akm2
┇a11n a21n a31n … ak1n
a12n a22n a32n … ak2n
…………………………a1mn a2mn a3mn … akmn
12.1 Multidimensional Array
a[1..k, 1..m, 1..n]
![Page 9: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/9.jpg)
99 Ming Zhang “Data Structures and Algorithms”
• C++ multidimensional array
ELEM A[d1][ d
2]…[d
n];
1 2
1 2 2 3
1
1
1 1
( [ , , , ]) ( [0,0, ,0])
[
]
( [0,0, ,0]) [ ]
n
n n
n n n
nn
i k n
i k i
loc A j j j loc A
d j d d j d d
j d j
loc A d j d j
12.1 Multidimensional Array目录页
Chapter 12
Advanced Data
Structure
![Page 10: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/10.jpg)
1010 Ming Zhang “Data Structures and Algorithms”
Special Matrices Implemented by Arrays
•Triangular matrix (upper/lower)
•Symmetric matrix
•Diagonal matrix
•Sparse matrix
12.1 Multidimensional Array目录页
Chapter 12
Advanced Data
Structure
![Page 11: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/11.jpg)
1111 Ming Zhang “Data Structures and Algorithms”
Lower Triangular Matrix
• One-dimensional array: list[0.. (n2+n)/2-1]
• The matrix element ai,j
is stored in
list[ (i2+i) /2 + j] (i>=j)
0
0 0
7 5 0
0 0 1 0
9 0 0 1 8
0 6 2 2 0 7
12.1 Multidimensional Array目录页
Chapter 12
Advanced Data
Structure
![Page 12: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/12.jpg)
1212 Ming Zhang “Data Structures and Algorithms”
Symmetric Matrix
• Satisfies that ai,j
= aj,i
, 0 ≤ i, j < n
The matrix on the right is a (symmetric) adjacent
matrix for a undirected graph
• Store the lower triangle in a 1-dimensional
array
sa[0..n (n+1) /2-1]
•There is a one-to-one mapping between sa[k] and ai,j
:
3 15
3 4
4
0 0
0 0
0 0
0 0
6
15 6
jijii
jiijjk
,2/)1(
,2/)1(
12.1 Multidimensional Array目录页
Chapter 12
Advanced Data
Structure
![Page 13: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/13.jpg)
1313 Ming Zhang “Data Structures and Algorithms”
Diagonal Matrix
• Diagonal matrix: all non-zero elements are
located at diagonal lines.
• Band matric: a[i][j] = 0 when |i-j| > 1
• A band matrix with bandwidth 1 is shown as below
a0,0
a1,1
a0,1
a1,0
an-1,n-2
an-1,n-1
an-2,n-1
a1,2
0
0
……
……
……
12.1 Multidimensional Array目录页
Chapter 12
Advanced Data
Structure
![Page 14: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/14.jpg)
14 Ming Zhang “Data Structures and Algorithms”
Sparse Matrix
• Few non-zero elemens, and these elements
distribute unevenly
6 7
0 0 0 7 0 0 5
0 15 0 0 0 0 0
0 0 0 6 0 17 0A
0 78 0 0 0 22 0
11 0 0 0 0 0 0
0 0 42 0 0 0 0
0
0
0
0
0
0
0
12.1 Multidimensional Array目录页
Chapter 12
Advanced Data
Structure
![Page 15: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/15.jpg)
15 Ming Zhang “Data Structures and Algorithms”
• Sparse Factor
•In a m×n matrix, there are t non-zero elements, and the sparse factor
is:
•When this value is lower than 0.05, the matrix could be considered a
sparse matrix.
• 3-tuple (i, j, aij): commonly used for input/output
•i is the row number
•j is the column number
•aij
is the element value
nm
t
12.1 Multidimensional Array目录页
Chapter 12
Advanced Data
Structure
![Page 16: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/16.jpg)
1616 Ming Zhang “Data Structures and Algorithms”
Orthogonal Lists of a Sparse Matrix
• An orthogonal list consists of two sets of lists
• pointer sequense for rows and columns
• Each node has two pointers: one points to the
successor on the same row; the other points to
the successor on the same column
0 3 0
0 5 6
2 0 0
0 1 3
1 1 5
2 0 2
head pointer for columns
1 2 6
12.1 Multidimensional Array目录页
Chapter 12
Advanced Data
Structure
head p
oin
ter fo
r row
s
![Page 17: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/17.jpg)
1717 Ming Zhang “Data Structures and Algorithms””
Classic Matrix Multiplication
12.1 Multidimensional Array目录页
Chapter 12
Advanced Data
Structure
![Page 18: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/18.jpg)
1818 Ming Zhang “Data Structures and Algorithms”
Time Cost of Classic Matrix Multiplication
•p=d1-c1+1,m=d3-c3+1,n=d2-c2+1;
•A is a p×m matrix, B is a m×n matrix, resulting in C, a p×n
matrix
•So the time cost of the classic matrix multiplication is O (p×m×n)
for (i=c1; i<=d1; i++)
for (j=c2; j<=d2; j++){
sum = 0;
for (k=c3; k<=d3; k++)
sum = sum + A[i,k]*B[k,j];
C[i,j] = sum;
}
12.1 Multidimensional Array目录页
Chapter 12
Advanced Data
Structure
![Page 19: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/19.jpg)
1919 Ming Zhang “Data Structures and Algorithms”
Sparse Matrix Multiplication
3 0 0 5 0 -1 0 0 2 0 0 0
0 2 1 0-2 4 0 0
=
0 1 2
1 0 1
0 2 -2 2 1 4
-1 0
0 4
0 6
6
-1
head pointer for columns
0 0 3 0 3 5
1 1 -1
0 2 2
4
finish
head
p
oin
ter for row
s
12.1 Multidimensional Array目录页
Chapter 12
Advanced Data
Structure
![Page 20: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/20.jpg)
2020 Ming Zhang “Data Structures and Algorithms”
Time Cost of Sparse Matrix Multiplication
• A is a p×m matrix, B is a m×n matrix, resulting
in C, a p×n matrix.
• If the number of non-zero elements in a row of A is at
most ta
• and the number of non-zero elements in a column of
B is at most tb
• Overall running time is reduced to O ( (ta+t
b)
×p×n)
• Time cost of classic matrix multiplication is O
(p×m×n)
12.1 Multidimensional Array目录页
Chapter 12
Advanced Data
Structure
![Page 21: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/21.jpg)
2121 Ming Zhang “Data Structures and Algorithms”
Applications of Sparse Matrix
in
i
i
n
nn
xa
xaxaxaaxP
0
2
210
)( polynomial of one
indeterminate
12.1 Multidimensional Array目录页
Chapter 12
Advanced Data
Structure
![Page 22: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/22.jpg)
Ming Zhang “Data Structures and Algorithms”
Chapter 12 Advanced Data Structure
• 12.1 Multi-array
• 12.2 Generalized List
• Basic Concepts
• Different Types of Generalized List
• Storage of Generalized List
• Traversal algorithm for Generalized List
• 12.3 Storage management
• 12.4 Trie
• 12.5 Improved BST
目录页
Chapter 12
Advanced Data
Structure
![Page 23: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/23.jpg)
Ming Zhang “Data Structures and Algorithms”
Basic Concepts
• Review of linear list
– Finite ordered sequence consisting of n(>=0)
elements.
– All elements of a linear list have the same
type.
• If a linear list contains one or more sub-lists, then
it is called a generalized list, usually represented
as:
– L= (x0,x
1,…,x
i,…,x
n-1)
目录页
Chapter 12
Advanced Data
Structure
12.2 Generalized list and Storage management
![Page 24: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/24.jpg)
24Ming Zhang “Data Structures and Algorithms”
L= (x0,x
1,…,x
i,…,x
n-1)
• L is the name of this generalized list.
• n is the length.
• Each xi(0≤ i ≤ n-1) is an element.
– either a single element, i.e. atom,
– or another generalized list, i.e. sublist.
• Depth : the number of brackets when all
the elements are converted to atoms.
目录页
Chapter 12
Advanced Data
Structure
12.2 Generalized list and Storage management
![Page 25: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/25.jpg)
25Ming Zhang “Data Structures and Algorithms”
L= (x0,x
1,…,x
i,…,x
n-1)
• head = x0
• tail = (x1,…,x
n-1)
• smaller lists
• Easier to store and to implement.
目录页
Chapter 12
Advanced Data
Structure
12.2 Generalized list and Storage management
![Page 26: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/26.jpg)
26Ming Zhang “Data Structures and Algorithms”
Different Types of Generalized Lits
• pure list
• There is only one path existing from root to
each leaf.
• i.e. each element (atom, sublist) only appears
once. (x1, (y1 , (a1 ,a2) , y3) , x3 , (z1 ,z2) )
x1
y1
a1 a2
y3 z1 z2
x3
目录页
Chapter 12
Advanced Data
Structure
12.2 Generalized list and Storage management
![Page 27: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/27.jpg)
27Ming Zhang “Data Structures and Algorithms”
• Reentrant lists
• Its elements (atoms or
sublists) might appear
more than once.
• Corresponds to a DAG
if no circles exists.
• Sublists and
atoms are labeled.
(L1: (a,b) , (L1, c ,L2: (d) ) , (L2, e,L3: (f,g) ) , L3)
( ( (a, b) ) , ( (a,b) ,c,d) , (d, e, f, g) , (f ,g) )
L1L2
L3
a bd
ef g
c
e.g. cycle lists
Different Types of Generalized Lits
目录页
Chapter 12
Advanced Data
Structure
12.2 Generalized list and Storage management
![Page 28: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/28.jpg)
28Ming Zhang “Data Structures and Algorithms”
• Circle lists
• contains circles.
• with infinite depth.
(L1: (L2: (L1, a) ) , (L2, L3: (b) ) , (L3, c) , L4: (d,L4) )
L1
L2L3
a b
c
L4
d
Different Types of Generalized Lits
目录页
Chapter 12
Advanced Data
Structure
12.2 Generalized list and Storage management
![Page 29: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/29.jpg)
29Ming Zhang “Data Structures and Algorithms”
A B C D
B C A
6 2
Linear Lists
’a’
5 3 ’x’
Pure Lists
6 2 ’a’
5 3 ’x’
E
B D
C A
6 2
’a’
5 3 ’x’
Reentrant Lists
F
4 Circle Lists
目录页
Chapter 12
Advanced Data
Structure
12.2 Generalized list and Storage management
![Page 30: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/30.jpg)
Ming Zhang “Data Structures and Algorithms”
• Graph Reentrant List Pure List(Tree) Linear
List
• Generaized lists are extensions of linear and tree
structures.
• Circle lists are reentrant lists that have circles.
• Applications of generalized lists
• Relations between the invocation of the function
• Reference relations in memory space
• LISP
目录页
Chapter 12
Advanced Data
Structure
12.2 Generalized list and Storage management
![Page 31: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/31.jpg)
31Ming Zhang “Data Structures and Algorithms”
Storage of Generalized Lists
1
1
1
data0
head
D10
D20
finish
• Generalized link lists without head node
– Problems might occur when deleting nodes.
– The list must be adjusted when deleting node
'data'.
目录页
Chapter 12
Advanced Data
Structure
12.2 Generalized list and Storage management
![Page 32: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/32.jpg)
32Ming Zhang “Data Structures and Algorithms”
-1 1
-1
1
data0
head (ref=0)
D10head (ref=1) 1
-1
head (ref=2)
D20
• Add the head node, and the deleting/inserting operation would
be simplified.
• Reentrant lists, especially circle lists
– mark each node (because it is a graph)
Storage of Generalized Lists
目录页
Chapter 12
Advanced Data
Structure
12.2 Generalized list and Storage management
![Page 33: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/33.jpg)
33Ming Zhang “Data Structures and Algorithms”
Circle Generalized Lists with Head Nodes
-1 1
-1
1
1
L
1 \
Lx
1
-1
Ly
c 0 \
1 1 \
d 0 -1 L4 1 \
-1 b 0 \
L3
-1 1 \ a 0
-1 1 \
L2
L1
目录页
Chapter 12
Advanced Data
Structure
12.2 Generalized list and Storage management
![Page 34: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/34.jpg)
34Ming Zhang “Data Structures and Algorithms”
-1 1
-1
1
1
L
1 \
Lx
1
-1
Ly
c 0 \
1 1 \
d 0 -1 L4 1 \
-1 b 0 \
L3
-1 1 \ a 0
-1 1 \
L2
L1
(L1 : (L2 : (a ) ) ,L1
目录页
Chapter 12
Advanced Data
Structure
12.2 Generalized list and Storage management
![Page 35: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/35.jpg)
Ming Zhang “Data Structures and Algorithms”
-1 1
-1
1
1
L
1 \
Lx
1
-1
Ly
c 0 \
1 1 \
d 0 -1 L4 1 \
-1 b 0 \
L3
-1 1 \ a 0
-1 1 \
L2
L1
finish
(L1: (L2: (a ,L1) ) Lx : L3, L2 , : (b ) ) , Ly : ( L3 , c) , L4 : ( d , ) ) L4(
讲师录像4:3
目录页
Chapter 12
Advanced Data
Structure
12.2 Generalized list and Storage management
![Page 36: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/36.jpg)
Ming Zhang “Data Structures and Algorithms”
Chapter 12 Advanced Data Structure
• 12.1 Multidimensional array
• 12.2 Generalized Lists
• 12.3 Storage management
• Allocation and Reclamation
• Freelist
• Dynamic Memory Allocation and Reclamation
• Failure Policy and Collection of Useless Units
• 12.4 Trie
• 12.5 Improved BST
目录页
Chapter 12
Advanced Data
Structure
![Page 37: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/37.jpg)
Ming Zhang “Data Structures and Algorithms”
Allocation and Reclamation
• Basic problems in storage management
• Allocate memory
• Reclaim "freed" memory
• Fragmentation problem
• The compression of storage
• Collection of useless units
• Useless units: memory that can be collected but has
not been collected yet
• Memory leak
• Programmers forget to delete pointers which will not be
used
12.3 Storage Management目录页
Chapter 12
Advanced Data
Structure
![Page 38: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/38.jpg)
38Ming Zhang “Data Structures and Algorithms”
Freelist
• Consider the memory as an array of changeable
number of blocks
• Some blocks has been allocated
• Link free blocks together, and form a freelist.
• Memory allocation and reclamation
• new p: allocate from available space
• delete p: return the block that p points to to the
freelist.
• If there is not enough space, resort to failure policy.
12.3 Storage Management目录页
Chapter 12
Advanced Data
Structure
![Page 39: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/39.jpg)
39Ming Zhang “Data Structures and Algorithms”
avail avail
(1)初始状态的可利用空间表 (2)系统运行一段时间后
的可利用空间表
结点等长的可利用空间表
12.3 Storage Management目录页
Chapter 12
Advanced Data
Structure
![Page 40: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/40.jpg)
40Ming Zhang “Data Structures and Algorithms”
Function overloading of freelist
template <class Elem> class LinkNode{
private:
static LinkNode avail; // head pointer
public:
Elem value; // value of each node
LinkNode next; // pointer pointing to next node
LinkNode (const Elem & val, LinkNode p) ;
LinkNode (LinkNode p = NULL) ; // construction function
void operator new (size_t) ; // redefine new
void operator delete (void p) ; // redefine delete
};
12.3 Storage Management目录页
Chapter 12
Advanced Data
Structure
![Page 41: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/41.jpg)
41Ming Zhang “Data Structures and Algorithms”
//implementation of new
template <class Elem>
void LinkNode<Elem>::operator new (size_t) {
if (avail == NULL) //if the list is empty
return ::new LinkNode; //allocate memory using new
LinkNode<Elem> temp = avail;
//allocate from available space list
avail = avail->next;
return temp;
}
12.3 Storage Management目录页
Chapter 12
Advanced Data
Structure
![Page 42: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/42.jpg)
42Ming Zhang “Data Structures and Algorithms”
//implementation of delete
template <class Elem>
void LinkNode<Elem>::operator delete (void p) {
( (LinkNode<Elem> ) p) ->next = avail;
avail = (LinkNode<Elem> ) p;
}
12.3 Storage Management目录页
Chapter 12
Advanced Data
Structure
![Page 43: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/43.jpg)
43Ming Zhang “Data Structures and Algorithms”
Free List: Stack in a Singly-Linked List
• new: deletion in the stack
• delete: insertion in the stack
• If the default new and delete operations
are needed, use “::new p” and “::delete p”.
• For example, when a program is finished,
return the memory occupied by avail back to
the system (free the memory completely)
12.3 Storage Management目录页
Chapter 12
Advanced Data
Structure
![Page 44: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/44.jpg)
44Ming Zhang “Data Structures and Algorithms”
• When pmax is equal to or
larger than S, no more
memory can be allocated.
12.3 Storage Management目录页
Chapter 12
Advanced Data
Structure
info
node of single linked list 1
link
static area
info
link
single linked list head1
freelist avail1
pmax
Sstatic area
freelist avail2
single linked list head2
node of single linked list 2
dynamic storage area
backup
storage
area
![Page 45: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/45.jpg)
Ming Zhang “Data Structures and Algorithms”
Dynamic Memory Allocation and Reclamation
Available blocks with variable lengths
•Allocation
• Find a block whose length is larger than the
requested length.
• Truncate suitable length from it.
•Reclamation
• Consider whether the space deleted can be
merged with adjacent nodes,
• So as to satisfy later request of large node.
12.3 Storage Management目录页
Chapter 12
Advanced Data
Structure
![Page 46: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/46.jpg)
46Ming Zhang “Data Structures and Algorithms”
Data Structure of Free Blocks
标记位 标记位 块长度
标记位 块长度 指针
块长
度 标记位
+ k
+ k
- k
-
(a)空闲块的结构 (b)已分配块的结构
12.3 Storage Management目录页
Chapter 12
Advanced Data
Structure
![Page 47: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/47.jpg)
47Ming Zhang “Data Structures and Algorithms”
Fragmentation Problem
• Internal fragment: space larger than the
requested bytes
• External fragment: small free blocks
外部碎片 内部碎片
外部碎片和内部碎片
12.3 Storage Management目录页
Chapter 12
Advanced Data
Structure
![Page 48: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/48.jpg)
48Ming Zhang “Data Structures and Algorithms”
Sequential Fit
Allocation of free blocks
•Common sequential fit algorithms
• first fit
• best fit
• worst fit
12.3 Storage Management目录页
Chapter 12
Advanced Data
Structure
![Page 49: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/49.jpg)
49Ming Zhang “Data Structures and Algorithms”
Sequential Fit
• 3 Blocks 1200,1000,3000
request sequence: 600, 500, 900, 2200
• first fit:
1200 1000 3000
600 600500 100 900 100 2200 800
12.3 Storage Management目录页
Chapter 12
Advanced Data
Structure
![Page 50: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/50.jpg)
Ming Zhang “Data Structures and Algorithms”
Sequential Fit
•best fit
1200 1000 3000
600500 400 900 21007002200
5555
request sequence: 600, 500, 900, 2200
12.3 Storage Management目录页
Chapter 12
Advanced Data
Structure
![Page 51: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/51.jpg)
Ming Zhang “Data Structures and Algorithms”
Sequential Fit
• worst fit
1200 1000 3000
600 240019002200 500 900 1000
Why always me?……
request sequence: 600, 500, 900, 2200
12.3 Storage Management目录页
Chapter 12
Advanced Data
Structure
![Page 52: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/52.jpg)
Ming Zhang “Data Structures and Algorithms”
Reclamation: merge adjacent blocks
L M N
+ k
k + k -
-
把块 M 释放回可利用空间表
12.3 Storage Management目录页
Chapter 12
Advanced Data
Structure
![Page 53: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/53.jpg)
53Ming Zhang “Data Structures and Algorithms”
Fitting Strategy Selection
• Need to take the following user request into
account
• Importance of allocation and reclamation
efficiency.
• Variation range of the length of al located
memory
• Frequency of allocation and reclamation
• In practice, fist fit is the most commonly used.
• Quicker allocation and reclamation.
• Support random memory requests.
Hard to decide which one is the best in general.
12.3 Storage Management目录页
Chapter 12
Advanced Data
Structure
![Page 54: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/54.jpg)
Ming Zhang “Data Structures and Algorithms”
Failure Policy and Collection of Useless Units
• If a memory request cannot be satisfied
because of insufficient memory, the
memory manager has two options:
• do nothing, and return failure info;
• follow failure policy to satisfy requests.
12.3 Storage Management目录页
Chapter 12
Advanced Data
Structure
![Page 55: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/55.jpg)
55Ming Zhang “Data Structures and Algorithms”
Compaction
• Collect all the fragments together
• Generate a larger free block.
• Used when there are a lot of fragments.
• Handler makes the address relative
• Secondary indirect reference to the
storage location.
• Only have to change handlers to move
blocks.
• No need to change applications.
12.3 Storage Management目录页
Chapter 12
Advanced Data
Structure
![Page 56: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/56.jpg)
56Ming Zhang “Data Structures and Algorithms”
Two Types of Compaction
• Perform a compact once a block is freed.
• Perform a compact when there is not
enough memory or when collecting useless
units.
eg:
Befor
e
After
12.3 Storage Management目录页
Chapter 12
Advanced Data
Structure
![Page 57: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/57.jpg)
57Ming Zhang “Data Structures and Algorithms”
Collecting Useless Units
• Collecting useless units: the most
complete failure policy.
• Search the whole memory, and label
those nodes not belonging to any link.
• Collect them to the freelist.
• The collection and compaction
processes usually can perform at the
same time.
12.3 Storage Management目录页
Chapter 12
Advanced Data
Structure
![Page 58: Data Structures and Algorithms 12...3 Ming Zhang “Data Structures and Algorithms” Basic Concepts •Array is an ordered sequence with fixed number of elements and type. •The](https://reader036.vdocuments.mx/reader036/viewer/2022062505/5edf43bbad6a402d666a9cb5/html5/thumbnails/58.jpg)
Data Structures and Algorithms
Thanks
the National Elaborate Course (Only available for IPs in China)http://www.jpk.pku.edu.cn/pkujpk/course/sjjg/
Ming Zhang, Tengjiao Wang and Haiyan ZhaoHigher Education Press, 2008.6 (awarded as the "Eleventh Five-Year" national planning textbook)
Ming Zhang “Data Structures and Algorithms”