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

A

B
C
D
F
G
E
H
K
CU TRC D LIU V
GII THUT
Chng 4: Cu trc danh sch
lin kt
2
t vn : Nhng hn ch bin kiu
mng (kiu d liu tnh) s dng
chng trc?
Khai bo nhiu nhng khi s dng t Tha, km
hiu qu trong s dng vng nh (1)
int a[100]; // Khai bo 100 phn t nhng nhiu lc ch s
dng 10 hoc 20 phn t.
Ngc li mun s dng >100 phn t th lm
sao? Thiu, m code sa li chng trnh!!! (2)
int a[100]; // Khai bo 100 phn t nhng lc ch s dng
120 phn t.
3
t vn : Nhng hn ch bin kiu
mng (kiu d liu tnh) s dng
chng trc?
Gi s xa phn t trn mng, hoc thm mt
phn t th lm th no?
Thao tc xa:
Xa xong phi di li Tn km qu!!!
Thao tc chn:
Ni ra xong chn vo Cng mt cng sc qu!!!
44 55 12 42 94 18 06 67
44 55 12 42 94 18 06 67
X
4
t vn : Nhng hn ch bin kiu
mng (kiu d liu tnh) s dng
chng trc?
Trong qu trnh s dng nu n thi im no
n khi kt thc chng trnh ta khng s dng
mng na khng th b c.
Lng ph b nh
5
Gii quyt vn
sao va s dng (khng tha cng
chng thiu!) ta s dng cp pht ng
.
int *a; //Khai bo mng kiu con tr
int n; //Khai bo s phn t thc t s dng
cout<<Nhap so phan tu n:; cin>>n;
a = new int[n]; //Cp pht ng cho mng ng
n phn t
.
6
Gii quyt vn
Khi n thi im khng s dng na, ta xa i
s dng vng nh cho vic khc
.
delete a; //Xa mng a va cp pht trn

Vy thao tc thm, xa th nh th no?


Vn nh c!
Gii quyt nh th no y??
7
Gii quyt vn
khc phc hn ch trn ngi ta t chc d
liu theo kiu mc ni (hay lin kt v gi l
danh sch lin kt)
Vy danh sch lin kt l g?
8
Danh sch lin kt
Mi phn t ngoi thnh phn thng tin v d liu
cn cha thm lin kt n phn t tip theo
trong danh sch
Cc phn t ca danh sch c cp pht ng
nn khng cn lin tc trong vng nh nh khai
bo mng.
Hn ch ca danh sch lin kt!?
9
Kiu d liu lin quan n Danh
sch lin kt: Kiu con tr
Kiu con tr ng vi kiu d liu T l mt kiu
d liu ca cc i tng dng cha a ch
vng nh cho cc i tng c kiu T.
10
Kiu d liu lin quan n Danh
sch lin kt: Kiu con tr
Khai bo bin:
Item * item_ptr1, * item_ptr2;
To mi i tng:
item_ptr1 = new Item;
S dng:
*item_ptr1 = 1378;
Hy b i tng:
delete item_ptr1;
Con tr NULL:
item_ptr2 = NULL;
11
Kiu d liu lin quan n Danh
sch lin kt: Kiu con tr
Gn con tr trong C++
Gn ni dung: bnh thng Gn con tr: nguy him
12
Danh sch lin kt n
C nhiu loi danh sch lin kt (DSLK), nh
DSLK n, DSLK i xng, DSLK vng, DS a
lin kt. Nhng chng ta ch yu nghin cu loi
DSLK n nh hnh sau:
13
Danh sch lin kt n
Thit k node lin kt
nh ngha kiu d liu
typedef DataType;
struct Node
{DataType Data;
Node *Next;
};
typedef Node *NodePtr; //nh ngha kiu d
liu NodePtr l kiu con tr ca Node
14
Cc thao tc c bn trn kiu DSLK
n
Khai bo mt DSLK
NodePtr List;
Khi to mt DSLK rng
void CreateEmptyList(NodePtr &List)
{
List=NULL;
}
15
Cc thao tc c bn trn kiu DSLK
n
Cp vng nh cha d liu x cho mt nt DSLK.
NodePtr CreateNodeList(DataType x)
{
NodePtr temp;
temp= new Node;
if (temp==NULL)
cout<<Loi cap phat;
else
{Gn(temp->Data , x); temp->Next=NULL;}
return temp;
}
16
Cc thao tc trn danh sch lin kt
Thm
Xa
Tm kim
Cp nht
.

You might also like