Senarai Berantai Ika Menarianti.

Slides:



Advertisements
Presentasi serupa
Pemograman 1 Pertemuan 7.
Advertisements

KOMPONEN DALAM DELPHI Form
STRUKTUR DATA Struktur Data - Gerlan A. Manu, ST.,MKom 1.
PERTEMUAN VI Penggunaan Array.
Penggunaan Kontrol Array
STRUKTUR DATA (7) single linked list circular
STRUKTUR DATA (8.1) double linked list non circular
PROSEDUR 1 Prosedur Adakalanya ketika kita membuat program, ada beberapa kode program yang ditulis berulang-ulang. Hal ini tentu saja menyita waktu dan.
Pencabangan Bersyarat
panduan praktis belajar VISUAL BASIC 6.0
STACK (Tumpukan) Tumpukan Koin Tumpukan Kotak.
Rahmat Deddy Rianto Dako, ST, M.Eng
Pemrograman Visual (Borland Delphi 7.0)
Senarai Berantai Dua Arah
Senarai Berantai Adalah salah satu struktur data dinamis yang paling sederhana (linked list) atau juga disebut senarai satu arah ( one way list).
Pertemuan 3 RECORD.
LINKED LIST (List linier)
Algoritma dan Struktur Data Daniel Riano Kaparang.
Kondisional Inti dari sebuah program adalah bagaimana mengambil keputusan berdasarkan masukan yang ada Pengambilan keputusan dilakukan dengan eksekusi.
BAB III KONTROL PROGRAM
PENCARIAN DATA DENGAN KONTROL DATA
PERTEMUAN IX Penggunaan Array.
-Tipe Bilangan Bulat > 1,4,40,100 -Tipe bilangan real > 1.50,3.234, Tipe Boolean > True, False -Tipe Karakter > A, B, X, y -Tipe String > Nama,
STRUKTUR DATA (6) single linked list non circular
Algoritma & Struktur Data Linked List Evangs Mailoa.
Struktur Data List Linear : Linked List (Double Linkedlist)
Pemprograman Terstruktur 1
KOMPONEN DALAM DELPHI Form
Struktur Data List Linear : Linked List (Single Linkedlist)
Proses Berurutan Pemrograman Visual.
Perulangan Ari Pambudi.
Variabel, Konstanta, Tipe Data Dan Operator pada VB
KOMENTAR Komentar dipakai untuk memberikan penjelasan atau keterangan di dalam baris program. Teks yang ditulis sebagai komentar tidak akan dikompilasi.
PROCEDURE AND FUNCTION
NAMA : siti hajar NIM : UNIT : b NO.hp : 0852 –
SENARAI BERANTAI TUNGGAL
Struktur Data Linked List
STRUKTUR DATA (2) Single Linked List
Menggunakan Form Pertemuan Ke-3.
Unit Dalam Delphi Struktur unit dalam delphi adalah sebagai berikut:
ELEMEN-ELEMEN PROGRAM
Penulisan Bahasa Program (Komentar, Variabel, Konstanta, Operator dan Tipe Data) Pemrograman Visual.
Dasar-Dasar Pemrograman
Pengantar Pemrograman
Perulangan.
Algoritma dan Struktur Data
Field Name / Nama Field Data Type / Tipe Data
Bahasa Pemrograman 1 STRUKTUR KONTROL VB Chapter 03 bimocahyo.
P e r t e m u a n 1 Membuat Workbook dengan Macro
TEAM 1 Cut Hayatul Wardani ( ) Saputri Phonna ( ) Azhary (140502)
Antrian Dengan Array Ika Menarianti.
NAMA : SITI HAJAR NIM : UNIT : B NO.HP : 0852 – 2000 – 3786.
Dasar Struktur Data Ika Menarianti.
Linked List.
Pointer & Linked List.
Pengenalan Visual Basic
PEMROGRAMAN PASCAL ELEMEN PEMROGRAMAN PASCAL.
Tumpukan Dengan Array Ika Menarianti.
Menambah dan Menghapus Data Via Array
STRUKTUR DATA TUMPukAN (STACK).
SENARAI BERANTAI (LINKED LIST)
FILE.
Dasar Struktur Data Ika Menarianti.
Linked List Oleh: Tim Struktur Data IF - UNIKOM.
LINKED LIST (SENARAI BERANTAI)
Komputer 3 Dian C. Rini N, M.Kom
Variable Static & Linked List
Menggunakan Form Pertemuan Ke-3.
KOMENTAR Komentar dipakai untuk memberikan penjelasan atau keterangan di dalam baris program. Teks yang ditulis sebagai komentar tidak akan dikompilasi.
KOMENTAR Komentar dipakai untuk memberikan penjelasan atau keterangan di dalam baris program. Teks yang ditulis sebagai komentar tidak akan dikompilasi.
Transcript presentasi:

Senarai Berantai Ika Menarianti

Senarai Berantai Senarai Berantai (Linked List) adalah jenis struktur data yang berisi kumpulan data yang disusun secara linier dengan masing-masing data disimpan dalam sebuah simpul dan antara satu simpul dengan simpul lain dihubungkan melalui pointer. Bentuk dasarnya membuat data disisipkan ke dalam senarai melalui salah satu ujungnya.

Perhatikan gambar yang menunjukkan keadaan senarai berantai apabila secara berturut nama Arsen, Bian, Cahaya dan Danar. Arsen sebagai data yang pertama kali dimasukkan akan berada pada salah satu ujung (ujung kanan) sedangkan data yang terakhir masuk yaitu Danar, berada di ujung kiri yang ditunjuk oleh Pointer Pertama Pertama Danar Cahaya Bian Arsen Nil

Pointer Pertama selalu menunjuk ke data yang terakhir kali dimasukkan. Sifat ini mirip dengan tumpukan tetapi berbeda pada penghapusan data. Penghapusan data pada senarai bisa dilakukan dimana saja. Setiap data di letakkan dalam sebuah simpul (node). Setiap simpul terdiri atas dua bagian, yaitu bagian data dan penunjuk simpul berikutnya.

Operasi dasar dalam senarai berantai InserFirst menyatakan operasi untuk memasukkan data ke dalam senarai berantai pada posisi yang ditunjuk oleh pointer Pertama. Dinyatakan dengan InsertFirst(d), d menyatakan item yang dimasukkan ke dalam senarai Find menyatakan operasi untuk mencari suatu data dalam senarai berantai. Dinyatakan dengan fungsi Find(pendahulu, x). Nilai baliknya berupa true kalau data yang dicari (yaitu x) ada atau False jika data tidak ada. Remove menyatakan operasi untuk menghilangkan sebuah simpul dari senarai berantai. Dinyatakan dengan Remove(x).

Implementasi senarai berantai Pilihlah menu File dan klik Save Project As.. Simpan unit dengan nama Fsenarai Simpan project dengan nama Psenarai Atur Properti: Name : FormSenarai Caption : Senarai Berantai

Menambahkan kode untuk mendeklarasikan tipe dan variabel Tuliskan kode berikut dibawah type TNama = String[35]; TPtrSimpul = ^TSimpul; TSimpul = record Nama : TNama; Berikut : TPtrSimpul; end; Buatlah baris kosong antara {private declarations} dan public pada baris kosong ketikkan: Pertama: TPtrSimpul;

TNama = String[35];  digunakan untuk membuat tipe Tnama TPtrSimpul = ^TSimpul; digunakan untuk membentuk tipe TPtrSimpul yang merupakan pointer yang menunjuk ke TSimpul . TSimpul = record Nama : TNama; Berikut : TPtrSimpul; end; Dibuat dua buah field bernama Nama dan Berikut. Nama digunakan untuk menyimpan data nama orang. Berikut merupakan pointer yang menunjuk ke simpul berikutnya atau berisi nil kalau tidak ada yang ditunjuk.

Menambahkan komponen string grid, edit dan button

Komponen Properti Nilai String Grid Name StringGridSenarai ColCount 1 (lebarkan sesuai grid) ScrollBars ssVertical (hanya scrollbar vertikal yang ditampilkan) Edit EditSenarai Text Kosongkan Button 1 ButtonSisip Caption &Sisipkan Button 2 ButtonCari &Cari Button 3 ButtonRemove &Remove Button 4 ButtonKeluar &Keluar

Menambahkan prosedur untuk menampilkan data Tambahkan baris berikut di atas kata private procedure TampilkanData; Tuliskan kode berikut di atas end. yang paling bawah. procedure TFormSenarai.TampilkanData; var Penunjuk : TPtrSimpul; JumSimpul: Integer; Nomor : Integer; begin //Hitung jumlah simpul Penunjuk:= Pertama; JumSimpul := 0;

while Penunjuk <> Nil do begin JumSimpul := JumSimpul + 1; Penunjuk := Penunjuk^.Berikut; end; //proses penampilan data StringGridSenarai.RowCount:=JumSimpul + 1; StringGridSenarai.Cells[0,0] := 'Isi Senarai'; Penunjuk:= Pertama; Nomor:=0; while penunjuk <> Nil do Nomor:= Nomor +1; StringGridSenarai.Cells[0,Nomor]:= Penunjuk^.Nama;

Penjelasan... Mula-mula diperlukan sebuah pointer dengan nama Penunjuk yang bertipeTPtrSimpul. Pointer ini digunakan untuk menunjuk ke record bertipe Tsimpul. Pointer diberi nilai yang sama dengan nilai pada pertama. Penunjuk := Pertama dijalankan akan terbentuk semacam keadaan berikut: Penunjuk Pertama Danar Cahaya Bian Arsen Nil

while Penunjuk <> Nil do begin JumSimpul := JumSimpul = 1; Pointer penunjuk itulah yang dipakai untuk melakukan pembacaan terhadap seluruh simpul. Pada tahap pertama dalam prosedur TampilkanData dilakukan proses untuk mendapatkan jumlah simpul, yang akan dipakai untuk menentukan jumlah baris dalam String Grid. Itulah sebabnya ada pernyataan: JumSimpul := 0; Yang memberikan nilai awal untuk JumSimpul sebesar 0 Perhitungan jumlah simpul dilakukan melalui: while Penunjuk <> Nil do begin JumSimpul := JumSimpul = 1; Penunjuk := Penunjuk^.Berikut; end;

Kondisi pengulangan berupa Penunjuk <> Nil , berarti Penunjuk tidak sama dengan Nil. Nil menyatakan bahwa tidak ada data yang ditunjuk. Gambar diatas menjelaskan bahwa penunjuk sedang menunjuk ke simpul yang berisi “Danar”. Jelas bahwa penunjuk tidak berisi Nil. Program yang terdapat dalam begin..end dijalankan. JumSimpul menjadi bernilai 1. Penunjuk := Penunjuk^.Berikut;  digunakan untuk mengisikan nilai Berikut yang ditunjuk oleh Penunjuk. Nilai penunjuk setelah pernyataan dieksekusi akan sama dengan nilai Berikut yang ditunjuk oleh penunjuk semula.

Penunjuk Pertama Danar Cahaya Bian Arsen Nil Penunjuk menunjuk ke simpul berisi “Cahaya”. Berarti penunjuk tidak berisi Nil. Program begin..end dijalankan dan JumSimpul menjadi bernilai 2. Selanjutnya menjadi...

Penunjuk Pertama Danar Cahaya Bian Arsen Nil Penunjuk menunjuk ke simpul berisi “Bian”. Berarti penunjuk tidak berisi Nil. Program begin..end dijalankan dan JumSimpul menjadi bernilai 3. Selanjutnya menjadi...

Penunjuk Pertama Danar Cahaya Bian Arsen Nil Penunjuk menunjuk ke simpul berisi “Arsen”. Berarti penunjuk tidak berisi Nil. Program begin..end dijalankan dan JumSimpul menjadi bernilai 4. Selanjutnya penunjuk mengarah ke berikutnya yaitu Nil. Mengingat penunjuk sama dengan Nil maka nilai while menjadi False, nilai pada JumSimpul menyatakan jumlah simpul dalam senarai.

StringGridSenarai.RowCount:=JumSimpul + 1; untuk menunjukkan jumlah baris dalam String Grid. Penambahan angka 1 ditujukan untuk menyediakan ruang bagi judul grid. Penentuan judul grid dilakukan StringGridSenarai.Cells[0,0] := 'Isi Senarai'; Penggunaan variabel Nomor pada kode didepan dipakai untuk menentukan letak dalam baris grid.

Menambahkan kode pada OnCreate Klik Event pada Object Inspector, pilih OnCreate dan klik ganda, kemudian ketikkan kode dibawah ini: procedure TFormSenarai.FormCreate(Sender: TObject); begin pertama := nil; TampilkanData; end; Tambahkan kode yang berwarna merah pada baris program OnCreate Tekan tombol F9

Hasil eksekusi program

Menambahkan kejadian pada OnDestroy Klik pada Form (klik di tempat kosong)  Klik tab Events Klik OnDestroy dan tuliskan kode berikut: procedure TFormSenarai.FormDestroy(Sender: TObject); var PtrData:TPtrSimpul; begin while Pertama <> Nil do PtrData:= Pertama; Pertama:= Pertama^.Berikut; Dispose(PtrData); end;

Pertama:= Pertama^.Berikut; Penjelasan.. Proses penghapusan seluruh simpul dalam senarai berantai menggunakan cara yang serupa ketika membaca data dalam senarai berantai. Perbedaannya, variabel Pertama justru digeser untuk menelusuri semua simpul. Pengahapusan simpul ditangani oleh pointer PtrData, yang pada setiap iterasi diberi nilai berupa nilai Pertama (sebelum digeser). Pertama:= Pertama^.Berikut;

Penghapusan simpul akan dilakukan oleh Dispose(PtrData); Pertama PtrData Danar Cahaya Akan dihapus Bian Arsen Nil Penghapusan simpul akan dilakukan oleh Dispose(PtrData);

Menambahkan Prosedur InsertFirst InsertFirst adalah prosedur yang berguna untuk memasukkan data ke dalam senarai berantai. Diatas kata private sisipkan kode berikut: procedure InsertFirst(X:TNama); Di ata baris end. Ketikkan: procedure TFormSenarai.InsertFirst(X:TNama); var PtrBaru:TPtrSimpul; begin new(PtrBaru); PtrBaru^.Nama:=X; PtrBaru^.Berikut:=Pertama; Pertama:=PtrBaru; end; Tekan Tombol F9

Penjelasan.. Untuk membentuk simpul baru, mula-mula dibentuk sebuah pointer PtrBaru yang ditujukan untuk menunjuk simpul tersebut. new(PtrBaru); Simpul baru diciptakan dan setelah pernyataan diatas dijalankan, senarai berantai masih kosong. Pertama Nil Gambar setelah new(PtrBaru); dijalankan PtrBaru Nama Berikut

Pertama PtrBaru Nama Berikut Pertama PtrBaru Nama Berikut Keadaan setelah Field Nama dan Berikut diisi Pertama Nil Diisi dengan nilai pada argumen X (misal Arsen) Diisi dengan nilai pertama, yaitu Nil PtrBaru Arsen Nil Nama Berikut Selanjutnya, pernyataan: Pertama:=PtrBaru; Membuat senarai berantai menjadi Pertama PtrBaru Arsen Nil Nama Berikut

Keadaan jika simpul kedua dibentuk Keadaan awal setelah nama diisi Pertama Arsen Nil Nama Berikut PtrBaru Bian Nama Berikut Setelah pernyataan PtrBaru^.Berikut:=Pertama; dieksekusi diperoleh hasil: Pertama Arsen Nil Nama Berikut Bian PtrBaru Nama Berikut

Senarai yang berisi dua simpul Apabila pernyataan Pertama:=PtrBaru; telah dijalankan diperoleh hasil Pertama Bian Arsen Nil PtrBaru Senarai yang berisi dua simpul

Kode untuk menambahkan data ke dalam senarai berantai Klik ganda pada tombol sisipkan dan tuliskan kode berikut: procedure TFormSenarai.ButtonSisipClick(Sender: TObject); begin if Trim(EditSenarai.Text)='' then ShowMessage('Nama harap diisi'); Exit; end; InsertFirst(EditSenarai.Text); TampilkanData;

Tekan tombol F9 dan isikan datanya

Menambahkan fungsi Find Tambahkan kode berikut di atas kata private function Find(var Pendahulu: TPtrSimpul; X:TNama):Boolean; Tuliskan kode berikut diatas end. function TFormSenarai.Find(var Pendahulu:TPtrSimpul; X:TNama):Boolean; var Penunjuk:TPtrSimpul; Ketemu:Boolean; begin Pendahulu := Nil; Penunjuk:= Pertama; Ketemu:=False;

Lanjutan... while Penunjuk <> Nil do begin if Penunjuk^.Nama= X then Ketemu:= True; Break; end; Pendahulu:= Penunjuk; Penunjuk:=Penunjuk^.Berikut; Find := Ketemu;

Penjelasan.. Fungsi Find memberi nilai balik berupa True jika: Misalnya yang dicari adalah ‘Danar’ Fungsi Find memberi nilai balik berupa True jika: Pendahulu berupa nilai Nil maka data yang dicari terdapat pada simpul yang ditunjuk oleh pertama. Jika nilai tidak Nil maka pendahulu tidak berada pada simpul yang ditunjuk Simpul yang dicari ditunjuk oleh Pertama Pertama Danar Cahaya Bian Arsen Nil Nil Pendahulu

Simpul yang mendahului simpul yang berisi data yang dicari Misalnya yang dicari adalah ‘Bian’ Simpul yang mendahului simpul yang berisi data yang dicari Pertama Danar Cahaya Bian Arsen Nil Pendahulu Simpul yang dicari

Kode OnClick tombol Cari Klik ganda pada tombol Cari dan ketikkan program berikut: procedure TFormSenarai.ButtonCariClick(Sender: TObject); var Pendahulu:TPtrSimpul; Keterangan:String; begin if Trim(EditSenarai.Text)='' then ShowMessage('Yang dicari tidak boleh kosong'); Exit; end;

Lanjutan.. if Find(Pendahulu, EditSenarai.Text) then begin Keterangan:= 'Data ditemukan. Pendahulunya: '; if Pendahulu <> Nil then Keterangan := Keterangan + Pendahulu^.Nama else Keterangan := Keterangan + 'nil'; end Keterangan:='Tidak ditemukan!'; //tampilkan keterangan ShowMessage(Keterangan); end;

Tambahkan Fungsi Remove Tambahkan kode berikut diatas kata private Procedure Remove(X:TNama); Tuliskan kode berikut dibawah end. Procedure TFormSenarai.Remove (X:TNama); var Pendahulu:TPtrSimpul; PosisiData:TPtrSimpul; Ketemu:Boolean; begin Ketemu:= Find(Pendahulu, X); if Not Ketemu then ShowMessage('Data tidak ada'); Exit; end;

if Pendahulu = Nil then begin //Data yang dihapus ditunjuk oleh pertama PosisiData:=Pertama; Pertama:= Pertama^.Berikut; Dispose(PosisiData); end else //yang dihapus tidak ditunjuk Pertama PosisiData:= Pendahulu^.Berikut; Pendahulu^.Berikut:=PosisiData^.Berikut; end;

Berikut mekanisme penghapusan simpul yang tidak mempunyai pendahulu Keadaan setelah pencarian ‘Danar’ dan PosisiData:=Pertama Pertama Danar Cahaya Bian Arsen Nil PosisiData Keadaan setelah Pertama:=Pertama^.Berikut Pertama Danar Cahaya Bian Arsen Nil PosisiData

Dibebaskan dari memori Keadaan setelah Dispose(PosisiData) Pertama Danar Cahaya Bian Arsen Nil Dibebaskan dari memori PosisiData

Berikut mekanisme penghapusan simpul yang mempunyai pendahulu Keadaan setelah pencarian ‘Cahaya’ dan PosisiData:=Pendahulu^.Berikut Pertama Danar Cahaya Bian Arsen Nil Pendahulu PosisiData Keadaan setelah Pendahulu^.Berikut:=PosisiData^.Berikut Pertama Danar Cahaya Bian Arsen Nil PosisiData PosisiData

Dibebaskan dari memori Keadaan setelah Dispose(PosisiData) Pertama Danar Cahaya Bian Arsen Nil Dibebaskan dari memori Pendahulu PosisiData

Kode pada OnClick Tombol Hapus Klik ganda tombol Hapus dan ketikkan kode berikut: procedure TFormSenarai.ButtonHapusClick(Sender: TObject); begin if Trim(EditSenarai.Text)='' then ShowMessage('yang dihapus tidak boleh kosong'); Exit; end; Remove(EditSenarai.Text); TampilkanData;

Evaluasi.. Jelaskan apa yang dimaksud senarai berantai? Terangkan mekanisme penyisipan data pada senarai berantai! Bagaimana bentuk deklarasi simpul pada senarai berantai apabila data pada simpul bertipe integer? Bagaimana bentuk deklarasi simpul pada senarai berantai apabila data pada simpul NIM berupa integer dan Nama berupa string?

5. Berapa jumlah simpul pada a). b). Pertama Pertama

6. Perhatikan senarai berikut: Bagaimana perintahnya agar menjadi seperti berikut: Nama Berikut Head Nara Wisnu Nil PtrData Nama Berikut Head Nara Wisnu Nil