Professional Documents
Culture Documents
DataStructurepart1 PDF
DataStructurepart1 PDF
com
Array
. , .
.
][L1 U1 , L2 U2 , Ln Un
Array [L U] of items
= U L + 1
] = [U1 L1 + 1][U2 L2 + 1][Un Ln + 1 n
= (U L +1) n ) (
: ] Float [200 1000 A25
.
A[i] = (i L) n +
= (25 0) 4 + 1000 = 1100 i
.
3 2
.1
Row Major
.2
Column Major
5
4
5
4
4
3
4
6
3
6
3
5
6
4
2
1
2
3
1
3
1
5
1
1
0
2
0
2
www.itdevelopteam.com
: , .
L1 U1 L2 U2
] == A[3][2 C
==
]A : [1 3 , 1 2
2 5
1 6
3 4
A [3 , 2] = (3 1) (2 1 + 1) + (2 1) = 2 2 + 1 = 5
A [3 , 2] = (2 1) (3 1 + 1) + (3 1) = 1 3 + 2 = 5
A [1 , 2] = (1 1) (2 1 + 1) + (2 1) = 1
A [1 , 2] = (2 1) (3 1 + 1) + (1 1) = 3
)3( 3 + 1
=6
=
0 2 5
2
0 0 4
>===== i > j
A [i , j] = 0
>===== i < j
A [i , j] = 0
www.itdevelopteam.com
3
.
.
( i 1) i
+j
2
6
1
5
1
4
3
6
4
5
5
4
7
3
5
2
2
( j 1) j
+i
2
3
2
2
6
1
1
1
1
>=====
1 0 0
2
5
0
>=====
3 1 1
>=====
1 6 7
>===== 0 2 5
0 0 4
www.itdevelopteam.com
, m n m n
m n .
.
A m n + Bm n = C m n
)for (i = 0 , i < m , + + i
)for (j = 0 , j < n , + + j
Cij = a ij + b ij
, A mL BLn
.
C mn = A m L B L n
ki
2
1
0
1
1
1
42 = 32
1
1
i k
2
1
34
)for (i = 0 , i < m , + + i
)for (j = 0 , j < n , + + j
{
Cij = 0
)for (k = 0 , k < L , + + k
Cij = a ik b kj + Cij
}
www.itdevelopteam.com
5
: ] C [1 ,0 .
: for Trace .
:
Cij = 0
Cij = a ik b kj + Cij
Cij = 2 1 + 0 = 2
Cij = 5 0 + 2 = 2
Cij = 3 1 + 2 = 5
Cij = 1 3 + 5 = 8
Cij
.
1
0
7
2
5
A T 3
7
0
2 0 4 2 1 1
1 2 5 0 2 3
1 3 8 4 5 8
2
A
1
A m n
)for (i = 0 , i < m , + + i
)for (j = 0 , j < n , + + j
]A [j] [i] = A [i] [j
www.itdevelopteam.com
Array A[n] , x
Int search (A[n] , x) ;
{
int i = 1 ;
while (i <= n && A[i] != x)
i++;
if (i > n ) return 1 //
else return i //
}
1
1
2
5
n
5
3
2
x
8
4
8
i
1
2
3
4
5
6
A[i]
1
5
2
8
x = A[4]
L + U
i=
;
2
if ( x < A[i] ) U = i 1
else if ( x > A[i] ) L = i + 1
else return i // i
}
return 1 //
}
www.itdevelopteam.com
7
]A[i
12
2
5
8
L
1
3
4
U
10
4
i
5
2
4
3
x
8
P(x) = 3x2 + 5x + 2
P(x) = 3x3 + 3
=
5
100
P(x) x100 + 2
Stack
Stack
. ) Last In First Owt (LIFO .
, . top .
, top top .
top Stack top
. top n top ,
n .
===
Top = 0
===
Top = n
www.itdevelopteam.com
A = 10
B=2
C=5
push (B)
push (A + B)
pop (C)
push (A B)
push (C)
push (B)
pop (A)
pop (B)
push (A B)
push (C)
push (A)
pop (B)
pop (C)
pop (A)
2
2
12
12
2
12
24
8
10
12
12
24
12
www.itdevelopteam.com
9
: top1
top2 top1 . top2
. top1 = 0 top2 = n + 1.
1 ===
top1 = 0
2 ===
top2 = n + 1
===
top2 = top1 + 1
1
top2 = n + 1
top1
. 1 , 2 , 3 , 4 . 2
push push 1 3 push
1 2 push .
: 1 , 2 , 3 , 4 .
4 3 1 2
4 2 3 1
3 2 4 1
3 1 4 2
2 1 3 4
push 1
push 2
push 3
push 4
pop 4
pop 3
push 1
push 2
push 3
push 4
pop 4
push 1
push 2
push 3
pop 3
pop 2
push 4
pop 4
pop 1
push 1
push 2
push 3
pop 3
push 1
push 2
pop 2
pop 1
push 3
pop 3
push 4
pop 4
) (1 2 3 4 a b c
b < c < a abc .
www.itdevelopteam.com
10
a b + c / d :
)(
) ,( Not ,
1.
2.
and , , / , mod
3.
OR , + ,
4.
5.
)= !( > < < , > , < = , > = ,
: .
a+b
infix
ab +
postfix
+ ab
prefix
-1
-2 , .
-3 , .
-4 .
:
)) ((a + (b (c a ))) (b / c
1
2
3
5
postfix = (a (b( ca ) ) + (bc ) / ) = abca + bc /
prefix = +a b ca / bc
www.itdevelopteam.com
11
infix postfix
-1 infix .
-2 push.
-3 .
-4 top
push top pop
.
-5 pop .
:
)) ((a + (b (c a ))) (b / c
abca + bc /
/
(
(
+
(
(
: , postfix.
a + bc a b/c
abca + bc /
www.itdevelopteam.com
12
: , postfix.
a + ( b c) a b / c
abc a + bc /
infix prefix .
a + ( b c) d / a c b
d
/ bcda
d
a
bc bcd
+ a / bcda
c
b
a
(
+
+a / bcda cd
: infix prefix .
) a + b c ( 2 b ) c / (d + a
+da
d
/ b c-2bc+da
a
c
b c-2b
-2b
c-2b
b c-2b
+a/ b c-2bc+da
b
2
c
b
a
+
(
/
postfix infix
www.itdevelopteam.com
13
postfix . push .
, pop infix . infix
push . ,
infix . infix . top
.
:
abca +bc/
b/c
c
b
))(a+b (c a))(b/c
c a
)b (c a
))a+(b (c a
a
c
b
a
prefix infix
prefix infix .
push , pop
infix push . top
.
+a b ca/bc
))(a+(b (c a
))(b (c a
a
)(c a
)(a+b (c a) (b/c
b
a
)(b/c
c
b
c
postfix prefix
www.itdevelopteam.com
14
)(queue
. (First In First Out) FIFO
. , .
front rear .
.
n front rear n
front rear .
front = rear = 0
===
rear = n
,
delqueue Addqueue . ) Addqueue(x x
delqueue x
.
x = delqueue
Addqueue delqueue
www.itdevelopteam.com
15
: A B C .
n=4
13
4
C=2
2
2
20
3
B = 10
A=5
)Addqueue (A + B
15
1
)Addqueue (C
)Addqueue (B C
C
2
B
10
2
A
5
15
Rear Front
0
0
1
1
2
2
3
4
) ( A = delqueue
) ( B = delqueue
)Addqueue (B A
C=2
B=2
A = 15
Addqueue delqueue .
.
)( rear front
. n n 1
.
queue : Array [0 .. n 1] of item
rear = n 1 ] queue[0 .
front = rear
.
front = rear
rear , rear = n 1
. rear .
rear = (rear + 1) mod n
front .
front = (front + 1) mod n
www.itdevelopteam.com
16
int delqueue ( )
{
rear = (rear + 1) mod n
if (front = = rear)
if (front = = rear)
C out << ;
{
C out << ;
else
return 0 ;
queue[rear] = x ;
else
{
front = (front + 1) mod n
x = queue[front] ;
}
}
Addqueue [50]
Addqueue [20]
Addqueue [30]
delqueue ( )
Addqueue [10]
r=1
f=0
r=2
f=0
r=3
f=0
r=3
f=1
r=0
f=1
0
10
1
50
1
50
1
50
1
50
1
50
2
20
2
20
2
20
2
20
3
3
30
3
30
3
30
www.itdevelopteam.com
17
: prefix postfix.
) a 2 bc (a 2 b c ) (1 / 2
postfix = a 2 bc 12 /
prefix = a 2 bc / 12
.
)(Selection Sort
n )] n 1 , (A[1..n .
.
.
, .
:
12
25
20
10
25
12
20
10
25
20
12
10
25
20
12
10
25
20
12
10
25
20
12
10
www.itdevelopteam.com
18
:
)for (i = n ; i > 1 ; 1
{
; ]max = A[1
; index = 1
)for (i = 2 ; j < = i ; + + j
)if (A[j] > max
{
; ]max = A[j
; index = j
}
; ]A[index] = A[i
; A[i] = max
}
:
index
max
4
2
3
: , n2 .
n .
www.itdevelopteam.com
19
)(Bubble Sort
n )] n 1 , (A[1..n
. ,
.
20
90
40
50
30
10
20
90
90
90
20
20
50
50
30
10
30
10
90
50
40
50
50
20
20
40
40
50
40
40
30
10
90
50
40
30
20
20
10
90
40
20
20
30
30
10
)for (i = 1 ; i < n ; + + i
)for (j = 1 ; j < = n ; + + j
)]if (A[j]) > A[j + 1
; )]swap (A[j] , A[j + 1
)for (i = 1 ; i < n ; + + i
)for (j = n ; j > = i ; j
)]if (A[j]) < A[j 1
; )]swap (A[j] , A[j 1
:
www.itdevelopteam.com
20
n2 . .
)for (i = 1 ; i < = x ; + + i
{
; sw = 0
)for (j = 1 ; j < n 1 ; + + j
)]if (A[j] > A[j + 1
{
; sw = 1
; )]swap (A[j] , A[j + 1
}
; if (sw = = 0) break
}
)(Insertion Sort
i 1 . i
.
)For (i = 2 ; i < = n ; + + i
{
; ]y = A[i
;j=i1
))]while (j > 0 & & (y < A[j
{
; ]A[j + 1] = A[j
;j=j1
}
; A[j + 1] = y
}
www.itdevelopteam.com
j
1
2
1
0
3
2
1
0
4
3
2
1
0
y
60
40
20
10
21
n
6
30
6
i
2
3
4
5
10
5
20
4
60
40
3
60
2
50
1
40
60
50
60
40
50
60
50
40
50
40
10
n .
: .
1
2
3
4
5
4
8
5
2
6
4
8
4
5
8
2
4
5
8
2
4
5
6
8
y
8
5
2
6
j
1
2
1
3
2
1
0
4
3
i
2
3
4
n
5
www.itdevelopteam.com
22
)(merge sort
n
) (2
.
7
12
17
5
18
20
11
12
18
20
11
17
12
18
20
17
12
18
20
17
18
17
11
2
2
2
11
11
11
20
11
17
12
20
18
11
20
18
17
12
11
12
www.itdevelopteam.com
23
2
U=4
U=2
L=4
i=3
L=2
i=1
i=2
U=3
U=3
U=1
U=2
U=4
L=3
L=3
L=1
L=1
L=1
: merge sort .
U=4
L=4
U=4
L=3
U=4
L=3
U=2
L=2
U=1
L=1
i=1
U=2
L=1
i=2
U=4
L=1
i=3
4
4
3
1
2
3
1
5
) Merge sort ( 1 , 4
4
4
5
3
1
4
: .
2
5
3
1
3
1
www.itdevelopteam.com
24
)(quick sort
,
. ,
.
.
. ) 0(n Log n
) 0 (n2 .
9
14
I
8
1
7
3
j
5
15
6
7
14
15
12
1
j
15
14
12
10
4
8
8
i
8
3
2
2
j
3
2
10
1
12
)(Pivot
10
i
3
1
www.itdevelopteam.com
25
)(Link List
.
)( . ,
. ) (node .
. ,
. ) (Head
) (Header .
4 .
-1 ) (node
-2 ) (p
-3 p .
-4 p new node .
) Void insert ( int x , node * start
{
; node * p , * q , * new node
; q = start next
; p = start ; new node = new ( node ) ; new node data = x
while ( q data < newnode
data
1442
44
)3
x
{
;p=q
; q = q next
}
; new node next = p next
; p next = new node
}
www.itdevelopteam.com
26
: 15 :
30
20
14
12
)Start (p
(15) x
p
Start
6
12
14
q
6
12
14
20
-1 )(q
-2 q next p) p next (
-3 p .
) void dellinklist ( int x , node * store
{
; node * p , * q
; p = start
;q=p
) while ( p data ! = x
{
;q=p
; p = p next
}
; q next = p next
; )delete (p
}
www.itdevelopteam.com
27
: 3 .
q
5
8
2
p
5
8
3
:
) node * f ( int x , node * start
{
; node * p
; p = start
; ) while ( p
; if ( p data ! = x && p ) p = p next
; else return p
}
) void g ( node * start
{
) if (start ! = Null
{
; C out << start data
; ) g ( start next
}
}
: f g
.
www.itdevelopteam.com
28
Null ) (start
.
: .
www.itdevelopteam.com
29
.
data -1
. -2
. -3
struct Linklist
{
struct Linklist * left ;
data ;
struct Linklist * right ;
}
typedeg struct Linklist node
node * p , * q ;
(new node) -1
-2
new node p -3
void insert (int x , node * start )
{
node * newnode , * p ;
newnode = new (node) ;
1 newnode data = x ;
newnode right = Null ;
newnode left = Null ;
p = start right ;
2 while ( p data < x ) p = p right ;
p = p left ;
( p right ) left = newnode ;
3 newnode left = p ;
newnode right = p right ;
p right = newnode ;
}
www.itdevelopteam.com
30
: 6 .
\
start
. .
, .
,
.
0
2x + 3x5 + 2
www.itdevelopteam.com
31
)(Graph
G ) = (Vertex ) , = (Edge
. .
, ,
.
) .(Adjacement
. n kn .
1
) n (n ) n (n 1
2
.
B
D
E
A B A B
n n . .
,
. , ,
b
.
a
e
d
c
= c - b - e
= c - a - e - b
= a - b - e - a
www.itdevelopteam.com
32
: .
: .
n n - 1 .
: .
: .
:
.
.
-1
. n n
n .
: )( .
d
b
f
e
a
b
c
d
e
f
g
77
w if i , j A [ i , j ] = 1
i j A [ i , j ] = 0 if
: , .
www.itdevelopteam.com
33
10
a
b
c
d
e
a
b
c
d
e
a
b
c
d
e
f
g
d
g
3
a
2
f
10
d
b
=A
e
d
b
www.itdevelopteam.com
34
: A A2 A3 .
a b c d e
2 1 1 1 1
1 2 1 1 1
1 1 4 1 1
1 1 1 2 1
1 1 1 1 2
a b c d e
a
b
2
= A
c
d
e
a b c d e
2 3 5 2 2
5 5 4 5 5
2 2 5 2 3
d
e
2 2 5 3 2
1 0 1 0 0
1 1 0 1 1
0 0 1 0 1
0 0 1 1 0
a
b
c
d
e
a b c d e
a
b
3 2 5 2 2
0 1 1 0 0
a b c d e
3
= A
0 1 1 0 0
1 1 0 1 1
0 0 1 0 1
d
e
0 0 1 1 0
1 0 1 0 0
1 1 0 1 1
0 0 1 0 1
0 0 1 1 0
a b c d e
a
b
1 0 1 0 0
0 1 1 0 0
a
b
c
d
e
2 1 1 1 1
a
b
1 1 4 1 1
1 1 1 2 1
d
e
1 2 1 1 1
1 1 1 1 2
) 5 c - d ( :
c-d-c-d
c-b-c-d
c-e-c-d
c-a-c-d
c-d-e-d
: A2 .
] [ i , j Ak k i j .
n2 n
.
-2
.
. .
.
www.itdevelopteam.com
35
.
n + e
n + 2e e . n .
|n=|V
|e=|E
\
4
5
6
.
.1
.2
a-b-c-f-e-gd
b
c
)(bfs
e
g
f
g
www.itdevelopteam.com
36
: .
, .
.
) (bfs .
,
. ) ( .
, ) bfs( .
bfs .
: .
a-b-f-c-e-d-g
b
a
,
.
, .
. , dfs .
a-b-c-d-f-e-g
b
a
d
d
f
e
f
e
www.itdevelopteam.com
37
. e :
c
a
= e - b - c - d - f - g - a
= e - c - b - a - d - f - g
g
d
Struct Linklist
{
int data ;
struct Linklist *Next ;
}
typedef struct Linklist node ;
1
2
3
struct LinkArray
5
int sw ;
node *Link ;
}
typedef struct LinkArray pointer ;
pointer *graphnodes ;
graphnodes = New pointer [n] ;
sw = 0
sw = 0
sw = 0
sw = 0
sw = 0
www.itdevelopteam.com
38
: . k
Void bfs ( pointer graphnodes [ ] , int k )
{
node *p ;
graphnodes [ k ] sw = 1 ;
C out << k ;
Addqueue ( k ) ;
. k
while ( ! ( queue . empty ( )))
{
k = delqueue ( ) ; . k
p = graphnodes [ k ] . Link ;
do
{
if ( graphnodes [ p data ] . sw = = 0 )
{
addqueue ( p data ) ; C out << p data ;
graphnodes [ p data ] . sw = 1 ;
}
p = p Next ;
}
while ( p ) ;
}
}
Graphnodes [ 5 ]
1
sw = 0
sw = 0
sw = 0
sw = 0
sw = 0
1
5
2
P
2
P
5
P
1
P
4
P
www.itdevelopteam.com
39
k
1
1
3
5
2
4
: . k
1
sw = 0
sw = 0
sw = 0
sw = 0
sw = 0
1 3 2 5 4
1
5
2
P (6)
P (5)
2
P (3)
P (9)
P (2)
5
P (12)
P (4)
P (1)
P (11)
P (10)
1
P (7)
4
P (8)
www.itdevelopteam.com
40
P (3,1) = Null
)P (2,1
)P (1,1
\
P (2,2) = Null
)P (1,2
.
k
1
2
3
4
1 2 3 4
)P (1,4
= sw
3
1
3
P (2,4) = Null
)P (1,3
= sw
2
1
)P (2,3
P (3,3) = Null
= sw
4
1
= sw
) (
)(
.
) : (kraskal ,
. )(
.
.
a
8
3
f 5
2
b
5
10
6
9 bf = 3
f 5
c
9 fe = 2
20
5
7
e
d
2 + 3 + 5 + 5 + 7 = 22
c
7
9 bd = 5 , 9 ae = 5
8 be = 6
9 cd = 7
8 de = 8 , af = 8
8 df = 9
8 ab = 10
8 bc = 20