Академический Документы
Профессиональный Документы
Культура Документы
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 ;
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
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.
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