Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
Diterbitkan olehRidwan Hengki Budiaman Telah diubah "6 tahun yang lalu
1
CHAPTER 2: LIST & LINKED LIST
PART 2 : LINKED LIST (MALAY VERSION) BY SUZILA YUSOF
2
OBJEKTIF Di akhir subtopik ini anda sepatutnya dapat:
mendefinisikan senarai berpaut Mengimplementasikan operasi senarai berpaut linear Menggunakan operasi senarai berpaut linear Menggunakan operasi senarai berpaut mencipta senarai berpaut Mencipta nod dlm senarai berpaut Menyemak senarai berpaut : kosong Menambah nod dalam senarai berpaut Menghapuskan nod dalam senarai berpaut Menganalisa keberkesanan penggunaan senarai berpaut linear
3
PENGENALAN senarai berpaut adalah sejenis struktur data di mana setiap itemnya mempunyai hubungkait antara item yang lain dalam suatu senarai Segala operasi yg hendak dilaksanakan ke atas sesuatu item perlulah diambilkira item bersebelahannya
4
DEFINISI SENARAI BERPAUT
senarai berpaut adalah satu kump item yg dinamik di mana saiznya akan bertambah dan berkurang bergantung kpd jumlah itemnya Item di dalam senarai berpaut mempunyai 2 medan iaitu medan data dan medan pepaut contoh 1: senarai berpaut boleh dikaitkan dengan kepala keretapi dan gerabak-gerabaknya. Gerabak-gerabak tersebut membawa muatan yang berlainan (data), setiap gerabaknya disambung kepada gerabak/kepala keretapi yang lain(pepaut).
5
DEFINISI SENARAI BERPAUT
contoh 2 senarai berpaut boleh dikaitkan dgn satu kump pendaki (senarai) gunung di mana setiap pendaki akan membawa barang-barang berlainan (data), setiap pendaki perlu membantu pendaki yang lain(pepaut) Senarai berpaut boleh diimplemen menggunakan : Penuding struktur data dinamik – saiz senarainya tidak mempunyai had nod-nod boleh ditambah dan dihapuskan dgn mudah
6
DEFINISI SENARAI BERPAUT
contoh 2 senarai berpaut boleh dikaitkan dgn satu kump pendaki (senarai) gunung di mana setiap pendaki akan membawa barang-barang berlainan (data), setiap pendaki perlu membantu pendaki yang lain(pepaut) Senarai berpaut boleh diimplemen menggunakan : Penuding struktur data dinamik – saiz senarainya tidak mempunyai had nod-nod boleh ditambah dan dihapuskan dgn mudah contoh kepala paut Item paut Item paut Item 10 20 NULL 30
7
DEFINISI SENARAI BERPAUT
Tatasusunan saiz terhad bil maksima objek dlm senarai berpaut bergantung kpd saiz tatasusunan yg telah diisytiharkan. Nod Kepala indeks 3 2 1 next Item -1 50 3 40 2 30 1 20
8
CIRI-CIRI SENARAI BERPAUT
mempunyai sekurang-kurangnya satu nod kepala nod kepala – penuding kpd nod pertama senarai berpaut ( mengandungi alamat bg nod pertama tersebut) Senarai berpaut kosong apabila ia tidak mengandungi sebarang nod atau bersaiz 0. Nod kepalanya mengandungi nilai NULL (bg implementasi penuding) atau -1 (bg implementasi tatasusunan) Nod kepala NULL Nod kepala -1 penuding tatasusunan
9
CIRI-CIRI SENARAI BERPAUT
Jika senarai berpaut tidak kosong, ia mestilah mempunyai : satu nod kepala (kepala!=NULL) sekurang-kurangnya satu medan data sekurang-kurangnya satu medan pautan
10
KATEGORI SENARAI BERPAUT
Senarai berpaut boleh dikategorikan mengikut beberapa kriteria dengan berdasarkan kepada kombinasi kriteria berikut : Senarai Berpaut Tunggal Senarai Berpaut Berganda Senarai Berpaut Linear Senarai Berpaut Membulat Senarai Berpaut Terisih Senarai Berpaut Tidak Terisih
11
OPERASI SENARAI BERPAUT
operasi-operasi asas bg senarai berpaut : mencipta senarai berpaut menentukan samada sesuatu senarai berpaut itu adalah kosong atau tidak menambah nod baru ke dalam senarai berpaut menghapuskan nod yg terdapat dlm senarai berpaut. mencari nod dengan nilai tertentu dlm senarai berpaut mengisih nod mengikut turutan menaik atau menurun
12
MENGISYTIHARKAN SENARAI BERPAUT TUNGGAL
#include <iostream.h> typedef int ELEM; class nod { //class untuk nod public: ELEM elemen; nod *paut; nod(const ELEM &item); ~nod (); }; class SenaraiPaut { //class untuk senarai private: nod *kepala; nod *sblm; nod *semasa; int bil; SenaraiPaut(); ~SenaraiPaut(); void setPos(const ELEM &); void input(const ELEM &); void papar(); ELEM hapus (const ELEM&); int panjang() const; bool kosong() const; bool cari(const ELEM&);
13
MENGISYTIHARKAN SENARAI BERPAUT TUNGGAL
Berdasarkan aturcara di atas : ahli bg class nod adalah: elemen – objek data berjenis integer paut – penuding berjenis nod yg akan menuding kpd nod berikutnya dlm senarai konstruktor dan distruktor (bg kelas nod) Bagi ahli dlm class SenaraiPaut di bahagian private: kepala - penuding berjenis nod, menuding kpd nod pertama dlm senarai sblm - penuding berjenis nod, menuding nod sebelum semasa - penuding berjenis nod, menuding nod semasa bil - pu integer yg memegang bilangan nod semasa dlm senarai
14
MENCIPTA SENARAI BERPAUT TUNGGAL
// Meletakkan nilai awal NULL kepada kepala dan semasa // Bil nod = 0 SenaraiPaut::SenaraiPaut() { kepala = NULL; bil = 0; } Gambaran senarai kosong yg dicipta semasa kepala
15
MEMUSNAHKAN SENARAI BERPAUT (DISTRUKTOR)
Untuk menghapuskan objek penuding dan memulangkan memori yg telah digunakan oleh penuding. Distruktor akan dipanggil secara automatik sebelum aturcara tamat. SenaraiPaut::~SenaraiPaut() { while (kepala !=NULL) { semasa = kepala; kepala = kepala -> paut; delete semasa; saiz--; } semasa = NULL; sebelum = NULL;
16
OPERASI TENTU KEDUDUKAN
Untuk mengenalpasti kedudukan item yg ingin dimasukkan dlm senarai. Pernyataan : membolehkan item yg lebih besar dr item semasa dlm senarai diperiksa secara menaik. Dipanggil dalam fungsi input dan hapus untuk menentukan kedudukan item tersebut item>semasa->elemen
17
OPERASI TENTU KEDUDUKAN
void SenaraiPaut::setPos(const ELEM & item) { sblm=NULL; //mula dari awal senarai semasa=kepala; while (semasa!=NULL && item>semasa->elemen) sblm=semasa; semasa=semasa->paut; //tuding pd nod seterusnya }
18
FUNGSI TAMBAH Terdapat tiga keadaan untuk operasi selit(tambah) iaitu:
senarai masih kosong – sblm adalah NULL, nod baru akan menjadi nod pertama dlm senarai senarai tidak kosong – sblm adalah NULL, ttp kepala tidak sama dgn NULL, nod baru akan menjadi nod kepala kerana keadaan ini bermakna nod baru adalah lebih kecil dari nod pertama(yg asal). senarai tidak kosong – sblm dan kepala tidak sama dengan NULL, nod baru akan diselit sama ada di tengah atau dihujung senarai coding
19
FUNGSI TAMBAH Gambaran operasi tambah/selit pada senarai barpaut apabila input dilaksanakan sebanyak tiga kali (berturutan dengan nilai adalah 5, 10 dan 8) Keadaan 1:Senarai masih kosong SenaraiPaut L; //istihar objek L.input(5); //nilai 5 dimasukkan dalam senarai (i) nod baru dicipta (ii)nod baru diselit di hadapan senarai item paut n 5 item paut sblm n 5 kepala
20
FUNGSI TAMBAH Keadaan 2: nod diselit dihujung senarai
L.input(10); //nilai 10 dimasukkan dalam senarai (i) nod baru dicipta (ii) senarai sedia ada (iii) nod diselit dihadapan senarai n item paut 10 kepala item paut 5 sblm kepala item paut item paut 5 10 sblm
21
FUNGSI TAMBAH Keadaan 3 : nod diselit di tengah senarai
L.input(8); //nilai 8 dimasukkan dalam senarai (i) nod baru dicipta (ii) senarai sedia ada (iii) nod baru diselit di tengah senarai n item paut 8 sblm item paut item paut 5 10 kepala sblm item paut item paut item paut 5 8 10 kepala semasa
22
FUNGSI HAPUS Langkah untuk hapus:
tentukan kedudukan item dengan memanggil fungsi setPos Tiga kedudukan item yg berlaku jika item wujud dlm senarai: i. Item berada di hadapan ii. Tengah atau iii. Hujung senarai hapus akan dapat memulangkan item yang dapat dihapuskan dan sebaliknya memaparkan mesej “Tiada dalam senarai” jika item yg ingin dihapuskan tiada dalam senarai. coding
23
FUNGSI HAPUS Gambaran senarai sedia ada yg ingin dilaksanakan dgn operasi hapus kepadanya (*Keadaan 1-3 tidak berkait, rujuk senarai asal untuk setiap pembuangan nod) 5 8 10
24
FUNGSI HAPUS Keadaan 1 :hapus nod di hadapan senarai
L.hapus(5); //nilai 5 hendak dihapuskan (i) setPos dilaksanakan – kedudukan penuding kepala, sblm dan semasa adalah seperti berikut: (ii) nod 5 diputuskan dari senarai kepala, semasa menuding nod 5 sblm adalah NULL 5 8 10 kepala sblm semasa kepala = semasa->paut 5 8 10 sblm semasa
25
FUNGSI HAPUS Keadaan 2 : Hapus nod di tengah senarai
L.hapus(8); //nilai 8 hendak dihapuskan dari senarai (rajah asal) (i) selepas setPos dilaksanakan, keadaan penuding kepala, sblm dan semasa adalah seperti berikut : (ii) nod 8 diputuskan dari senarai semasa menuding nod 8 sblm menuding nod 5 5 8 10 kepala sblm semasa sblm->paut=semasa->paut; 5 8 10 kepala sblm semasa
26
FUNGSI HAPUS Keadaan 3 : hapus nod dihujung senarai
L.hapus(10); // nilai 10 hendak dihapuskan dari senarai (rajah asal) (i) selepas setPos dilaksanakan di dalam fungsi hapus, kedudukan penuding kepala, sblm dan semasa adalah seperti berikut: (ii) nod 10 diputuskan dari senarai 5 8 10 kepala sblm semasa sblm->paut=semasa->paut 5 8 10 kepala sblm semasa
27
FUNGSI LAIN UNTUK SENARAI BERPAUT
Terdapat beberapa fungsi penting yang lain yang diperlukan dalam mengimplemenkan senarai berpaut, iaitu : Fungsi papar nod Fungsi panjang senarai Fungsi semak senarai kosong Fungsi Carian
28
FUNGSI PAPAR NOD Fungsi papar – membolehkan kandungan dalam senarai berpaut dipaparkan iaitu bermula dari nod awal/pertama hinggalah nod terakhir dalam senarai. void SenaraiPaut::papar() { nod *n; n=kepala; while (n!=NULL) cout<<n->elemen<<"\n"; n=n->paut; //menuding nod seterusnya }
29
FUNGSI PANJANG SENARAI
Fungsi panjang – dapat memulangkan saiz senarai atau bilangan nod semasa yang ada dalam senarai. int SenaraiPaut::panjang() const {return bil;}
30
FUNGSI SEMAK SENARAI KOSONG
Fungsi kosong – berperanan memulangkan nilai true jika senarai adalah kosong, dan nilai false jika senarai tidak kosong. bool SenaraiPaut::kosong() const {return kepala==NULL;}
31
FUNGSI CARIAN Fungsi cari – membolehkan proses carian dilakukan kepada senarai berpaut. Fungsi ini akan pulangkan nilai true jika item yang dicari berada dalam senarai, sebaliknya akan pulang nilai false jika item tiada dalam senarai. bool SenaraiPaut::kosong() const {return kepala==NULL;} bool SenaraiPaut::cari(const ELEM &val) { nod *n; n=kepala; bool jumpa=false; while (n!=NULL) { if (n->elemen==val) jumpa=true; n=n->paut; //tuding kepada nod seterusnya } return jumpa;
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.