Вы находитесь на странице: 1из 4

Bi tp thc hnh mn Cu trc d liu Lp 08DBB

CAI T DANH SACH LIN KT N


1. T chc DSLK n: Mi phn t ca DSLK n l mt cu trc cha 2 thng tin : Thnh phn Info : lu tr cc thng tin v bn thn phn t. Thnh phn Next : lu tr a ch ca phn t k tip trong danh sch, hoc lu tr gi tr NULL nu l phn t cui danh sch. Ta c nh ngha tng qut :
struct NODE { Data Info; // Data l kiu c nh//ngha trc NODE* pNext; //Con tr ch n cu trc NODE };

Vi du, mi phn t ch lu thng tin l 1 s nguyn:


struct NODE { int Info; NODE* pNext; };

Mt phn t trong DSLK n l mt bin ng s c yu cu cp pht khi cn. V DSLK n chinh l s lin kt cc bin ng ny vi nhau do vy t c s linh ng khi thay i s lng cc phn t. Nu bit c a ch ca phn t u tin trong DSLK n th c th da vo thng tin pNext ca n truy xut n phn t th hai ca xu, v li da vo thng tin pNext ca phn t th hai truy xut phn t th ba. Ngha l qun l mt xu n ch cn bit a ch phn t u xu. Thng mt con tr pHead s c dng lu tr a ch phn t u xu, ta gi pHead l u xu. Ta c khai bo :
NODE *pHead;

Tuy v nguyn tc ch cn qun l xu thng qua ia chi u xu pHead, nhng thc t c nhiu trng hp cn lm vic vi phn t cui cng, khi mi ln mun xc nh phn t cui cng li phi duyt t u xu. tin li, c th s dung thm mt con tr pTail gi a ch phn t cui xu. Ta khai bo nh sau :
NODE *pTail ;

Bi tp thc hnh mn Cu trc d liu Lp 08DBB

Lc ny hnh nh ca DSLK n nh sau:

2. Cc thao tc c bn trn DSLK n Gi s c nh ngha cu trc ca 1 nt trong DSLK n nh sau:


struct NODE { Data Info; NODE *pNext; };

Th tuc CreateNode to ra mt phn t cho danh sch a c xy dng xong:


NODE* { CreateNode(Data x) NODE *p; p = new NODE; if (p==NULL) { printf(" Khng b nh."); return p; } p->Info=x; p->pNext=NULL; return p; }

Ta cn khai bo mt danh sch (cu th la khai bo bin lu tr a ch u v a ch cui ca DSLK) NODE* pHead, *pTail; 2.1 Khi to danh sch rng
pHead = pTail = NULL;

2.2 Chn mt phn t vo danh sch C 3 cch chn newNode vo xu pHead Cch 1 : Chn vo u danh sch Xem ham AddHead trong slide ly thuy t Cch 2 : Chn vo cui danh sch Xem ham AddTail trong slide ly thuy t Cch 3 : Chn vo danh sch sau mt phn t q Xem ham InsertAfter trong slide ly thuy t

Bi tp thc hnh mn Cu trc d liu Lp 08DBB

to DSLK t danh sch rng, ta ln lt chn cc nt vo trong danh sch bng 1 trong 3 cch nu trn - Nu s nt cn chn bit trc, ta c th dng vng lp for thc hin thao tc chn cc nt vo trong DSLK o Vi du:
for(int i=0; i<SoPT_CanChen; i++) { //Thm 1 node cothng tin ladata va DSLK o u AddHead(pHead, data); }

Nu ta cn chn cc nt vo DSLK m khng bit trc s lng nt, ta c th thc hin vng lp vi ch nh dng. o Vi du:
do { //to newNode AddHead(pHead, data); printf(Nhap so 0 neu khong nhap tiep!); } while (getch() != 0);

2.3 Tm mt phn t trong DSLK n Thut ton : Xu n i hi truy xut tun t, do p dung thut ton tm tuyn tinh xc nh phn t trong xu c kho k. S dung mt con tr phu tr p ln lt tr n cc phn t trong xu. Thut ton c ci t nh sau :
NODE* Search(NODE *pHead, DATA x) { NODE *p; p=pHead; while (p->Info!=x)&&(p!=NULL) p=p->pNext; return p; }

2.4 Hu mt phn t khi danh sch Hu mt phn t sau phn t p Xem ham RemoveAfter trong slide ly thuy t Hu mt phn t c kho k Thut ton B1:
p=Search(pHead,k); //p l phn t c kho k.

Bi tp thc hnh mn Cu trc d liu Lp 08DBB

B2: Nu (p!=NULL) th // gi s c th tuc SearchPre //tm phn t q ng trc p trong xu. B2.1 q=SearchPre(Head,p); B2.2 Nu q=Head th // q l u xu B2.2.1 pHead=p->pNext; B2.2.2 free(p); ngc li B2.2.3 DeleteAfter(q); 2.5 Duyt danh sch Duyt danh sch l thao tc thng c thc hin khi c nhu cu x l cc phn t ca danh sch theo cng mt cch thc hoc khi cn ly thng tin tng hp t cc phn t ca danh sch. Nh l : m cc phn t ca danh sch. Tm tt c cc phn t tho iu kin. Hu ton b danh sch (v gii phng b nh). duyt danh sch ( v x l tng phn t ) ta thc hin nh sau :
void Traverse(NODE *Head) { NODE *p; p=pHead; while (p!=NULL) { ProcessNode(p); p=p->pNext; } }

// x l c th tu trng hp

Вам также может понравиться