Download as pdf or txt
Download as pdf or txt
You are on page 1of 20

B mn Cng ngh phn mm

Khoa Cng ngh thng tin


Trng i hc Khoa hc T nhin

K THUT LP TRNH
ThS. ng Bnh Phng
dbphuong@fit.hcmus.edu.vn

DANH SCH LIN KT

1
&
VC
BB
Ni dung

1 Cc hnh thc t chc danh sch

2 Cc loi danh sch lin kt

3 Thao tc trn DSLK n

4 Cc ng dng ca DSLK n

Danh sch lin kt


2
&
VC
BB
Cc hnh thc t chc danh sch

Mi lin h gia cc phn t c ngm hiu


Mi phn t c mt ch s v ngm hiu rng
xi+1 nm sau xi. Do cc phn t phi nm
cnh nhau trong b nh.
S lng phn t c nh. Khng c thao tc
thm v hy m ch c thao tc di ch.
Truy xut ngu nhin n tng phn t
nhanh chng.
Ph b nh do khng bit trc kch thc.
V d: mng mt chiu.
Danh sch lin kt
3
&
VC
BB
Cc hnh thc t chc danh sch

Mi lin h gia cc phn t r rng


Mi phn t ngoi thng tin bn thn cn c
thm lin kt (a ch) n phn t k tip.
Cc phn t khng cn phi sp xp cnh
nhau trong b nh.
Vic truy xut n mt phn t ny i hi
phi thng qua mt phn t khc.
Ty nhu cu, cc phn t s lin kt theo
nhiu cch khc nhau to thnh danh sch
lin kt n, kp, vng.
Danh sch lin kt
4
&
VC
BB
Danh sch lin kt

Nhn xt
S nt khng c nh, thay i ty nhu cu
nn y l cu trc ng.
Thch hp thc hin cc thao tc chn v hy
v khng cn phi di nt m ch cn sa cc
lin kt cho ph hp. Thi gian thc hin
khng ph thuc vo s nt danh sch.
Tn b nh cha con tr lin kt pNext.
Truy xut tun t nn mt thi gian.

Danh sch lin kt


5
&
VC
BB
Cc loi danh sch lin kt

Danh sch lin kt n pTail

A B C D E
pHead
typedef struct tagNode
{
Data Info;
struct tagNode *pNext;
} NODE;
typedef struct tagList
{
NODE *pHead;
NODE *pTail;
} LIST;

Danh sch lin kt


6
&
VC
BB
Cc loi danh sch lin kt

Danh sch lin kt kp (Doubly Linked List)

A B C D

typedef struct tagDNode


pHead { pTail
Data Info;
struct tagDNode *pNext, *pPrev;
} DNODE;
typedef struct tagDList
{
NODE *pHead;
NODE *pTail;
} DLIST;

Danh sch lin kt


7
&
VC
BB
Cc loi danh sch lin kt

Danh sch lin kt n vng (Circular Linked List)

A B C D E

typedef struct tagCNode


pHead { pTail
Data Info;
struct tagCNode *pNext;
} CNODE;
typedef struct tagCList
{
NODE *pHead;
NODE *pTail;
} CLIST;

Danh sch lin kt


8
&
VC
BB
Cc loi danh sch lin kt

Danh sch lin kt kp vng (Circular Linked List)

A B C D

typedef struct tagCNode


pHead { pTail
Data Info;
struct tagCNode *pNext, *pPrev;
} CNODE;
typedef struct tagCList
{
NODE *pHead;
NODE *pTail;
} CLIST;

Danh sch lin kt


9
&
VC
BB
Danh sch lin kt n

Khi to danh sch

pHead ?
pTail ?

Kim tra danh sch c rng hay khng

pHead NULL?
pTail

Danh sch lin kt


10
&
VC
BB
Danh sch lin kt n

To mt nt mi

X ? ?

Xc nh con tr ca nt th i trong danh sch


p = pHead
p = p->pNext i ln trong khi p != NULL ri
return li con tr p hin ti
Xc nh v tr ca nt p trong danh sch
Tng t nh trn nhng tr li v tr

Danh sch lin kt


11
&
VC
BB
Danh sch lin kt n

Chn mt nt vo u danh sch


Danh sch rng pTail

pHead X

Danh sch khng rng

X
pTail

A B C D E
pHead
Danh sch lin kt
12
&
VC
BB
Danh sch lin kt n

Thm mt nt vo cui danh sch


Danh sch rng pTail

pHead X

Danh sch khng rng pTail

A B C D E
pHead
Danh sch lin kt
13
&
VC
BB
Danh sch lin kt n

Thm mt nt vo sau nt q
q == NULL chn vo u danh sch
q != NULL

X
pTail

A B C D E
pHead
Danh sch lin kt
14
&
VC
BB
Danh sch lin kt n

Thm mt nt vo trc nt q
q == NULL chn vo u danh sch
q != NULL Tm nt p trc q ri thm vo
sau nt p ny.
q

X
pTail

A B C D E
pHead
p Danh sch lin kt
15
&
VC
BB
Danh sch lin kt n

Hy mt nt u danh sch
Danh sch rng khng lm g c
Danh sch khng rng (nu sau khi hy m
pHead = NULL th pTail = NULL)

pTail

A B C D E
pHead
p = pHead Danh sch lin kt
16
&
VC
BB
Danh sch lin kt n

Hy mt nt sau nt q
q == NULL hy nt u danh sch
q != NULL

pTail

A B C D E
pHead
p = q->pNext Danh sch lin kt
17
&
VC
BB
Danh sch lin kt n

Hy mt nt cui danh sch


Nt cui p (p = pTail)
Tm nt q trc nt p (nu c)
Hy nt sau nt q
Hy mt nt c kha k (Info = k)
Tm nt p c kha k v hy nt q trc .
Hy nt sau nt q (nu c)
Hy ton b danh sch
Duyt danh sch in/tm/m cc nt
Danh sch lin kt
18
&
VC
BB
ng dng ca DSLK n

Stack (Ngn xp)


Lm vic theo c ch LIFO (Last In First Out)

(Top) pHead C

A pTail (Bottom)

Danh sch lin kt


19
&
VC
BB
ng dng ca DSLK n

Queue (Hng i)
Lm vic theo c ch FIFO (First In First Out)
pHead (Front)

A B C D

pTail (Rear)
Danh sch lin kt
20

You might also like