CHAPTER 2: LIST & LINKED LIST

Slides:



Advertisements
Presentasi serupa
Single linked list.
Advertisements

STRUKTUR DATA (7) single linked list circular
STRUKTUR DATA (8.1) double linked list non circular
STRUKTUR DATA (5) Pointer dan Function
LINKED LIST Single Linked List.
LINKED LIST.
LINK LIST Latifah Rifani.
Single Linked List.
Queue.
STRUKTUR DATA (6) single linked list non circular
Single Linked List Yuliana Setiowati, S.Kom.
Queue.
BY YOHANA N Sumber Kepustakaan : yohananugraheni.files.wordpress.com/.../linked- lis... 1 LINKED LIST.
Searching.
KONSTRUKTOR & DESTRUKTOR
LINKED LIST by Yohana N.
Struktur Data List Linear : Linked List (Double Linkedlist)
Pertemuan ketujuh Struktur data st3telkom.ac.id
Struktur Data List Linear : Linked List (Single Linkedlist)
Matakuliah : T0534/Struktur Data Tahun : 2005 Versi : September 2005
Struktur Data (Data Structure) – IS 2313
MATAKULIAH : STRUKTUR DATA
ADT DINAMIS : SINGLY LINKED LIST DAN DOUBLE LINKED LIST
STRUKTUR DATA (2) Single Linked List
8. Singly Linear Linked List
LINKED LIST by Yohana N.
Single Linked List.
12. Doubly Linear Linked List
MATAKULIAH : STRUKTUR DATA
Linked List INSERT KIRI 6.3 & 7.3 NESTED LOOP.
Elemen-elemen Dasar Pada Bahasa C++
STACK / TUMPUKAN Struktur Data.
Stack.
Stack.
Dasar Bahasa Java.
QUEUE (ANTRIAN) Queue atau antrian didefinisikan sebagai kumpulan dari obyek-obyek yang homogen dengan operasi penambahan elemen (Enqueue) dan pengambilan.
LINKED LIST by Yohana N Sumber Kepustakaan : yohananugraheni.files.wordpress.com/.../linked-lis...
VARIABEL, TIPE DATA, OPERATOR
Pohon Biner.
E4161 : SISTEM KOMPUTER & APLIKASI
SISTEM PENGENDALIAN UNIX
Bab 2 Jenis Data.
PENORMALAN.
Bab 11 rotokol autan ata.
E4161 SISTEM KOMPUTER & APLIKASI
PENGURUSAN FAIL BAB 8.
Dokumen standard kurikulum dan pentaksiran
REKABENTUK ORGANISASI
Pemprograman Linear: Kaedah Simpleks
Komunikasi Data Pengesanan Pembetulan Ralat.
Bab 10 Fungsi.
BAHAGIAN 3 : FUNGSI MESYUARAT MBJ
INSTRUMEN SENARAI SEMAK DISLEKSIA (ISD)
Bab 5 Sistem Tetingkap.
KAJIAN TEMPATAN APA ITU KERJA KURSUS
SISTEM INVENTORI PERMINTAAN TIDAK BERSANDAR
KAWALAN DALAM VISUAL BASIC 6.0
Pemprograman Linear: Kaedah Simpleks
INTEGRITI DATA Objektif:
Bab 5 Sistem Tetingkap.
ALGORITHM & DATA STRUCTURE BY : SUZILA YUSOF
Pengenalan kepada Bahasa C
STRUKTUR ASAS DAN CIRI-CIRI SISTEM PENGOPERASIAN
BAB 4 REKABENTUK SISTEM Objektif:
PENGURUSAN INGATAN, SISTEM AWAL
PENGURUSAN PROSES BAB 5.
Bab 13 Manipulasi Fail.
SINGLE LINKED LIST (SLL)
Bab 11 Tatasusunan.
Bab 5 Sistem Tetingkap.
Transcript presentasi:

CHAPTER 2: 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 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

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

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).

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

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

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

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

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

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

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

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&);

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

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

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;

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

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 }

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

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

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

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

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

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

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

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

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

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

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 }

FUNGSI PANJANG SENARAI Fungsi panjang – dapat memulangkan saiz senarai atau bilangan nod semasa yang ada dalam senarai. int SenaraiPaut::panjang() const {return bil;}

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;}

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;