1 / 31

CHAPTER 3: LIST & LINKED LIST

CHAPTER 3: LIST & LINKED LIST. PART 2 : LINKED LIST (MALAY VERSION) BY SUZILA YUSOF. OBJEKTIF . Di akhir subtopik ini anda sepatutnya dapat : mendefinisikan senarai berpaut Mengimplementasikan operasi senarai berpaut linear Menggunakan operasi senarai berpaut linear

bernie
Télécharger la présentation

CHAPTER 3: LIST & LINKED LIST

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CHAPTER 3:LIST & LINKED LIST PART 2 : LINKED LIST (MALAY VERSION) BY SUZILA YUSOF

  2. OBJEKTIF • Di akhirsubtopikiniandasepatutnyadapat: • mendefinisikansenaraiberpaut • Mengimplementasikanoperasisenaraiberpaut linear • Menggunakanoperasisenaraiberpaut linear • Menggunakanoperasisenaraiberpaut • menciptasenaraiberpaut • Mencipta nod dlmsenaraiberpaut • Menyemaksenaraiberpaut : kosong • Menambah nod dalamsenaraiberpaut • Menghapuskan nod dalamsenaraiberpaut • Menganalisakeberkesananpenggunaansenaraiberpaut linear

  3. PENGENALAN senaraiberpautadalahsejenisstruktur data dimanasetiapitemnyamempunyaihubungkaitantara item yang lain dalamsuatusenarai Segalaoperasiyghendakdilaksanakankeatassesuatu item perlulahdiambilkira item bersebelahannya

  4. DEFINISI SENARAI BERPAUT • senaraiberpautadalahsatukump item ygdinamikdimanasaiznyaakanbertambahdanberkurangbergantungkpdjumlahitemnya • Item didalamsenaraiberpautmempunyai 2 medaniaitumedan data danmedanpepaut • contoh 1: • senaraiberpautbolehdikaitkandengankepalakeretapidangerabak-gerabaknya. Gerabak-gerabaktersebutmembawamuatan yang berlainan (data), setiapgerabaknyadisambungkepadagerabak/kepalakeretapi yang lain(pepaut).

  5. DEFINISI SENARAI BERPAUT • contoh 2 • senaraiberpautbolehdikaitkandgnsatukumppendaki (senarai) gunungdimanasetiappendakiakanmembawabarang-barangberlainan (data), setiappendakiperlumembantupendaki yang lain(pepaut) • Senaraiberpautbolehdiimplemenmenggunakan : • Penuding • struktur data dinamik – saizsenarainyatidakmempunyai had • nod-nod bolehditambahdandihapuskandgnmudah

  6. DEFINISI SENARAI BERPAUT • contoh 2 • senaraiberpautbolehdikaitkandgnsatukumppendaki (senarai) gunungdimanasetiappendakiakanmembawabarang-barangberlainan (data), setiappendakiperlumembantupendaki yang lain(pepaut) • Senaraiberpautbolehdiimplemenmenggunakan : • Penuding • struktur data dinamik – saizsenarainyatidakmempunyai had • nod-nod bolehditambahdandihapuskandgnmudah • contoh

  7. DEFINISI SENARAI BERPAUT • Tatasusunan • saizterhad • bilmaksimaobjekdlmsenaraiberpautbergantungkpdsaiztatasusunanygtelahdiisytiharkan.

  8. CIRI-CIRI SENARAI BERPAUT mempunyaisekurang-kurangnyasatu nod kepala nod kepala – penudingkpd nod pertamasenaraiberpaut ( mengandungialamatbg nod pertamatersebut) Senaraiberpautkosongapabilaiatidakmengandungisebarang nod ataubersaiz 0. Nod kepalanyamengandunginilai NULL (bgimplementasipenuding) atau -1 (bgimplementasitatasusunan)

  9. CIRI-CIRI SENARAI BERPAUT • Jikasenaraiberpauttidakkosong, iamestilahmempunyai : • satu nod kepala (kepala!=NULL) • sekurang-kurangnyasatumedan data • sekurang-kurangnyasatumedanpautan

  10. KATEGORI SENARAI BERPAUT • Senaraiberpautbolehdikategorikanmengikutbeberapakriteriadenganberdasarkankepadakombinasikriteriaberikut : • SenaraiBerpaut Tunggal • SenaraiBerpautBerganda • SenaraiBerpaut Linear • SenaraiBerpautMembulat • SenaraiBerpautTerisih • SenaraiBerpautTidakTerisih

  11. OPERASI SENARAI BERPAUT • operasi-operasiasasbgsenaraiberpaut : • menciptasenaraiberpaut • menentukansamadasesuatusenaraiberpautituadalahkosongatautidak • menambah nod barukedalamsenaraiberpaut • menghapuskan nod ygterdapatdlmsenaraiberpaut. • mencari nod dengannilaitertentudlmsenaraiberpaut • mengisih nod mengikutturutanmenaikataumenurun

  12. MENGISYTIHARKAN SENARAI BERPAUT TUNGGAL #include <iostream.h> typedefint ELEM; class nod { //class untuk nod public: ELEM elemen; nod *paut; nod(const ELEM &item); ~nod (); }; class SenaraiPaut { //class untuksenarai private: nod *kepala; nod *sblm; nod *semasa; intbil; public: SenaraiPaut(); ~SenaraiPaut(); void setPos(const ELEM &); void input(const ELEM &); void papar(); ELEM hapus (const ELEM&); intpanjang() const; boolkosong() const; boolcari(const ELEM&); };

  13. MENGISYTIHARKAN SENARAI BERPAUT TUNGGAL • Berdasarkanaturcaradiatas : ahlibg class nod adalah: • elemen – objek data berjenis integer • paut– penudingberjenis nod ygakanmenudingkpd nod berikutnyadlmsenarai • konstruktordandistruktor (bgkelas nod) • Bagiahlidlm class SenaraiPautdibahagian private: • kepala- penudingberjenis nod, menudingkpd nod pertamadlmsenarai • sblm- penudingberjenis nod, menuding nod sebelum • semasa- penudingberjenis nod, menuding nod semasa • bil- pu integer ygmemegangbilangan nod semasadlmsenarai

  14. MENCIPTA SENARAI BERPAUT TUNGGAL // Meletakkannilaiawal NULL kepadakepaladansemasa // Bil nod = 0 SenaraiPaut::SenaraiPaut() { kepala = NULL; bil = 0; } semasa kepala Gambaransenaraikosongygdicipta

  15. MEMUSNAHKAN SENARAI BERPAUT (DISTRUKTOR) SenaraiPaut::~SenaraiPaut() { while (kepala !=NULL) { semasa = kepala; kepala = kepala -> paut; delete semasa; saiz--; } semasa = NULL; sebelum = NULL; } Untukmenghapuskanobjekpenudingdanmemulangkanmemoriygtelahdigunakanolehpenuding. Distruktorakandipanggilsecaraautomatiksebelumaturcaratamat.

  16. OPERASI TENTU KEDUDUKAN item>semasa->elemen Untukmengenalpastikedudukan item ygingindimasukkandlmsenarai. Pernyataan : membolehkan item yglebihbesardr item semasadlmsenaraidiperiksasecaramenaik. Dipanggildalamfungsi input danhapusuntukmenentukankedudukan item tersebut

  17. OPERASI TENTU KEDUDUKAN void SenaraiPaut::setPos(const ELEM & item) { sblm=NULL; //muladariawalsenarai semasa=kepala; while (semasa!=NULL && item>semasa->elemen) { sblm=semasa; semasa=semasa->paut; //tuding pd nod seterusnya } }

  18. FUNGSI TAMBAH coding • Terdapattigakeadaanuntukoperasiselit(tambah) iaitu: • senaraimasihkosong – sblmadalah NULL, nod baruakanmenjadi nod pertamadlmsenarai • senaraitidakkosong – sblmadalah NULL, ttpkepalatidaksamadgn NULL, nod baruakanmenjadi nod kepalakeranakeadaaninibermakna nod baruadalahlebihkecildari nod pertama(ygasal). • senaraitidakkosong – sblmdankepalatidaksamadengan NULL, nod baruakandiselitsamaadaditengahataudihujungsenarai

  19. FUNGSI TAMBAH item paut n item paut sblm n kepala Gambaranoperasitambah/selitpadasenaraibarpautapabila input dilaksanakansebanyaktiga kali (berturutandengannilaiadalah 5, 10 dan 8) Keadaan 1:Senarai masihkosong SenaraiPaut L; //istiharobjek L.input(5); //nilai 5 dimasukkandalamsenarai (i) nod barudicipta (ii)nod barudiselitdihadapansenarai

  20. FUNGSI TAMBAH n item paut kepala item paut sblm kepala item paut item paut sblm Keadaan 2: nod diselitdihujungsenarai L.input(10); //nilai 10 dimasukkandalamsenarai (i) nod barudicipta (ii) senaraisediaada (iii) nod diselitdihadapansenarai

  21. FUNGSI TAMBAH n item paut sblm item paut item paut kepala sblm item paut item paut item paut semasa kepala Keadaan 3 : nod diselitditengahsenarai L.input(8); //nilai 8 dimasukkandalamsenarai (i) nod barudicipta (ii) senaraisediaada (iii) nod barudiselitditengahsenarai

  22. FUNGSI HAPUS coding • Langkahuntukhapus: • tentukankedudukan item denganmemanggilfungsisetPos • Tigakedudukan item ygberlakujika item wujuddlmsenarai: i. Item beradadihadapan ii. Tengah atau iii. Hujungsenarai • hapusakandapatmemulangkan item yang dapatdihapuskandansebaliknyamemaparkanmesej “Tiadadalamsenarai” jika item ygingindihapuskantiadadalamsenarai.

  23. FUNGSI HAPUS Gambaransenaraisediaadaygingindilaksanakandgnoperasihapuskepadanya (*Keadaan 1-3 tidakberkait, rujuksenaraiasaluntuksetiappembuangan nod)

  24. FUNGSI HAPUS • kepala, semasamenuding nod 5 • sblmadalah NULL kepala sblm semasa • kepala = semasa->paut sblm semasa Keadaan 1 :hapus nod dihadapansenarai L.hapus(5); //nilai 5 hendakdihapuskan (i) setPosdilaksanakan – kedudukanpenudingkepala, sblmdansemasaadalahsepertiberikut: (ii) nod 5 diputuskandarisenarai

  25. FUNGSI HAPUS • semasamenuding nod 8 • sblmmenuding nod 5 kepala sblm semasa • sblm->paut=semasa->paut; kepala sblm semasa Keadaan 2 : Hapus nod ditengahsenarai L.hapus(8); //nilai 8 hendakdihapuskandarisenarai (rajah asal) (i) selepassetPosdilaksanakan, keadaanpenudingkepala, sblmdansemasaadalahsepertiberikut : (ii) nod 8 diputuskandarisenarai

  26. FUNGSI HAPUS kepala sblm semasa • sblm->paut=semasa->paut kepala sblm semasa Keadaan 3 : hapus nod dihujungsenarai L.hapus(10); // nilai 10 hendakdihapuskandarisenarai (rajah asal) (i) selepassetPosdilaksanakandidalamfungsihapus, kedudukanpenudingkepala, sblmdansemasaadalahsepertiberikut: (ii) nod 10 diputuskandarisenarai

  27. FUNGSI LAIN UNTUK SENARAI BERPAUT • Terdapatbeberapafungsipenting yang lain yang diperlukandalammengimplemenkansenaraiberpaut, iaitu : • Fungsipapar nod • Fungsipanjangsenarai • Fungsisemaksenaraikosong • FungsiCarian

  28. FUNGSI PAPAR NOD void SenaraiPaut::papar() { nod *n; n=kepala; while (n!=NULL) { cout<<n->elemen<<"\n"; n=n->paut; //menuding nod seterusnya } } Fungsipapar – membolehkankandungandalamsenaraiberpautdipaparkaniaitubermuladari nod awal/pertamahinggalah nod terakhirdalamsenarai.

  29. FUNGSI PANJANG SENARAI intSenaraiPaut::panjang() const {return bil;} Fungsipanjang – dapatmemulangkansaizsenaraiataubilangan nod semasa yang adadalamsenarai.

  30. FUNGSI SEMAK SENARAI KOSONG boolSenaraiPaut::kosong() const {return kepala==NULL;} Fungsikosong – berperananmemulangkannilai true jikasenaraiadalahkosong, dannilai false jikasenaraitidakkosong.

  31. FUNGSI CARIAN boolSenaraiPaut::kosong() const {return kepala==NULL;} boolSenaraiPaut::cari(const ELEM &val) { nod *n; n=kepala; booljumpa=false; while (n!=NULL) { if (n->elemen==val) jumpa=true; n=n->paut; //tudingkepada nod seterusnya } return jumpa; } Fungsicari – membolehkanprosescariandilakukankepadasenaraiberpaut. Fungsiiniakanpulangkannilai true jika item yang dicariberadadalamsenarai, sebaliknyaakanpulangnilai false jika item tiadadalamsenarai.

More Related