Lab. Teknik Informatika Struktur Data 1

dokumen-dokumen yang mirip
3. DOUBLE LINK LIST. Lab. Teknik Informatika Struktur Data 1

RESUME A B C D. Gambar 1 Double Linked list dengan Empat Simpul

Bab 4 Pointer dan Struktur Data Dinamik 16 BAB IV POINTER DAN STRUKTUR DATA DINAMIK TUJUAN PRAKTIKUM TEORI PENUNJANG

5. QUEUE (ANTRIAN) TUJUAN PRAKTIKUM

4. STACK / TUMPUKAN TEORI PENUNJANG

KERUGIAN DAN KEUNTUNGAN LINKED LIST

Double linked list. Gambar 1. Double linket list dengan empat simpul Deklarasi Double Linked List di dalam Pascal :

: Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Linked List. Single Linked List

ARRAY DINAMIS. Type. Pengenal = Simpul Simpul = Type. (Nama var) : ( Type data)

Menghapus Pointer Statement yang digunakan untuk menghapus pointer adalah Dispose, yang mempunyai bentuk umum : Dispose(peubah) ;

BAB IX LINKED LIST (SENARAI BERANTAI)

1. Traversing Untuk algoritma traversing sama seperti pada single Link List

BAB IX LINKED LIST (SENARAI BERANTAI)

Masukan Judul... Infotype àsebuah tipe terdefinisi yang menyimpan informasi sebuah elemen list

MODUL PRAKTIKUM STRUKTUR DATA

List akan disimpan dalam bagian memori komputer yang dinamakan HEAP

6. TREE / BINARY TREE

STACK (TUMPUKAN) Secara sederhana, sebuah tumpukan bisa kita ilustrasikan seperti gambar berikut.

BAB III QUEUE (ANTRIAN)

A B C D E F. Gambar 1. Senarai berantai dengan 6 simpul

KONSEP POINTER DAN LINKED LIST

Double Linked List. Brigida Arie Minartiningtyas, M.Kom

Pertemuan VI ANTRIAN (Queue)

ALGORITMA & PEMROGRAMAN

M Queue Berprioritas. Amin Arifiyani. Struktur Data M

List Linear (Linked List) Farah Zakiyah Rahmanti 2014

Single Linked List (1)

LOGO STRUKTUR DATA QUEUE

SINGLE LINKED LIST (NON CIRCULAR)

DIKTAT KULIAH ALGORITMA dan STRUKTUR DATA II. : Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Queue.

BAB VII SENARAI BERANTAI (List)

PERTEMUAN VI POINTER 6.1 Tujuan Praktikum 6.2 Teori Penunjang Pointer

Pertemuan 3. Perubah Dinamis (Dinamic variable) Suatu perubah yang akan dialokasikan hanya pada saat diperlukan, yaitu setelah program dieksekusi.

Praktikum Stuktur Data [MODUL]

STRUKTUR DATA Pertemuan 1 s.d 8

VARIABEL, TIPE DATA, KONSTANTA, OPERATOR DAN EKSPRESI. Pemrograman Dasar Kelas X Semester 2

LINKED LIST. Altien Jonathan Rindengan, S.Si, M.Kom

Pointer. Pengertian. Struktur Data Pascal

QUEUE (ANTRIAN) Struktur Data - Queue

Linked List. Bandung 2013

DIKTAT KULIAH ALGORITMA dan STRUKTUR DATA II. Tujuan Pembelajaran : Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Stack.

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

Universitas gunadarma. pascal. Bab 4- bab 10. Hana Pertiwi S.T

SENARAI BERANTAI (LINK LIST)

MODUL 6 SINGLE & DOUBLE LINKED LIST

ALGORITMA DAN STRUKTUR DATA

STRUKTUR DATA. Literatur

Struktur Data. Tumpukan : Definisi & Operasi. Pertemuan 4 PROBLEM ALGORITHM DATA IMPLEMENTATION. Pert. 4b Struktur Data - FMIPA USD

LIST. Dewi Sartika, M.Kom

Queue. Implementasi Queue dengan Array

ANTRIAN ( QUEUE ) NAMA KELOMPOK : 1.EKA PRIHANTORO 2.FATKHUL ELEKTRIK PSH 3.RIZKY GUMILANG CR

STACK (TUMPUKAN) & QUEUE (ANTRIAN) Altien Jonathan Rindengan, S.Si., M.Kom.

Struktur Data. Queue (Antrian)

BAB 10 POINTER 5.1 Tujuan 5.2 Pengertian Pointer Perubah dinamis pointer

PENGENALAN List merupakan sebuah pemikiran/konsep struktur data yang sangat dasar pada pemrograman agar lebih fleksibel. Setiap elemen akan ditambahka

Data structure :Metode LINK LIST. Kusnawi, S.Kom, M.Eng STMIK AMIKOM Yogyakarta

Gambar 3.1. Circular Single Linked List. Deklarasi bisa dilihat kembali di Single Linked List atau Double Linked List.

BAB II STACK Atau TUMPUKAN

Pertemuan 3 RECORD. Contoh penggunaan record (dalam program PASCAL) : Type Siswa = record Nama : string[25]; Kelas : 1..6; Nilai : real; end;

KONSEP POINTER DAN LINKED LIST

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Queue (Antrian)

(3) BAHAN KAJIAN (materi ajar)

MAKALAH STRUKTUR DATA. DOSEN PEMBIMBING Nisa miftachurohmah, S.kom., M.Si PENYUSUN SITI JAMILATUL MU ADDIBAH ( )

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

Algoritma dan Struktur Data

Senarai berantai. linked list. Pertemuan keenam Struktur data st3telkom.ac.id. by : tenia wahyuningrum & Sisilia Thya Safitri

STRUKTUR BAHASA PEMROGRAMAN

Struktur Data. Pertemuan 2

Pertemuan 7. REVIEW dan QUIS

Gambar 1. Single Linked List

Langkah Mudah Belajar Struktur Data Menggunakan C/C++

SATUAN ACARA PERKULIAHAN MATA KULIAH PEMROGRAMAN PASCAL * (TK) KODE / SKS: KK /2 SKS

Modul Praktikum Algoritma dan Struktur Data BAB 6 LINKED LIST

2. Mahasiswa dapat membuat dan menggunakan array dan linked list dalam suatu kasus.

STACK/TUMPUKAN. R. Denny Ari Wibowo, S.Kom STMIK BINA NUSANTARA JAYA LUBUKLINGGAU

Pada kondisi ini proses penghapusan tidak bisa dilakukan Kondisi linked list memiliki hanya 1 data{satu simpul} Akhir. Akhir

BAB II STACK (TUMPUKAN)

Algoritma dan Struktur Data. Pertemuan 9 Circular Linked List

KONTRAK PRAKTIKUM. Gambaran Umum : Alur bagi peserta praktikum :

IKG2A3/ Pemrograman Terstruktur 2

04. Single Linked List

S T A C K ( T U M P U K A N )

Bagian I. Studi Kasus [82] Tanda tangan:

Algoritma dan Struktur Data. Linked List

Algoritma dan Struktur Data. Pertemuan 7 Linked List

SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 2 x 3 x 50 Menit Pertemuan : 4 & 5

TUGAS MATA KULIAH TEKNIK KOMPILASI

Tutorial - Single Linked List

Pendahuluan Struktur Data. Nisa ul Hafidhoh

LAPORAN PRAKTIKUM IX. Oleh:

Jadi satu simpul di double linked list adalah sebagai berikut : Info. Kiri. Kanan

Linked List 6.3 & 7.3 NESTED LOOP

BAB II Senarai Berantai (Linked List)

PRAKTIKUM ALGORITMA & PEMROGRAMAN III MODUL_06 Stack (Tumpukan)

SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 1 x 3 x 50 Menit Pertemuan : 9

STRUKTUR DATA Pertemuan 1 s.d 8

SINGLE LINKED LIST NON CIRCULAR (SENARAI BERANTAI TUNGGAL TIDAK BERPUTAR)

Transkripsi:

2. POINTER dan SINGLE LINK LIST TUJUAN PRAKTIKUM 1. Praktikan mengetahui tipe struktur data baru yaitu tipe data Pointer. 2. Praktikan menggunakan pointer didalam pembuatan program dan dapat menerapkannya dalam sebuah variabel dinamik (Link List). 3. Praktikan mengetahui perbedaan antara variabel Pointer, Variabel Statis dan Variabel Dinamis. TEORI PENUNJANG Pada pertemuan sebelumnya telah dijelaskan mengenai variabel yang bertipe Array, suatu tipe data yang bersifat statis (ukuran dan urutannya sudah pasti). Selain itu ruang memori yang dipakai oleh variabel tersebut tidak dapat dihapus jika variabel tersebut tidak digunakan kembali. Untuk mengatasi masalah diatas maka pascal menawarkan suatu fasilitas yang di mungkinkan suatu pengubah/variabel bersifat dinamis. Variabel dinamis adalah suatu variabel yang akan dialokasikan hanya pada saat diperlukan, yaitu setelah program dieksekusi. Variabel-variabel ini juga dapat dihapus pada saat program dieksekusi, sehingga ukuran variabel akan selalu berubah. 2.1. Variabel Pointer Variabel dinamik tidak dapat dideklarasikan secara eksplisit seperti halnya mendeklarasikan variabel statik dan tidak dapat secara langsung ditunjukkan oleh suatu pengenal (identifier). Variabel dinamik hanya dapat ditunjukkan oleh variabel khusus yang berisi alamat memori yang digunakan oleh variabel dinamik tersebut. Variabel khusus ini disebut juga dengan variabel pointer. Variabel Pointer adalah suatu variabel yang menunjuk ke alamat memori yang digunakan untuk menampung data yang akan diproses. Lab. Teknik Informatika Struktur Data 1

Deklarasi Variabel Pointer : Var <Nama Variabel> : ^<Tipe Data> Contoh Pendeklarasian : Var JumlahData : ^Integer; NamaSiswa : ^String[25]; NilaiSiswa : ^Real; Pendeklarasian variabel pointer tidak jauh berbeda dengan pendeklarasian variabel biasa, hanya perlu ditambahkan simbol topi ( ^ ) biasa juga disebut ceret atau circumflex. Simbol topi tersebut menandakan bahwa variabel tersebut menunjuk ke lokasi tertentu di memori. 2.2. Operasi Pada Pointer Pada pointer ada dua operasi dasar yang dapat dilakukan yaitu : 1. Operasi mengkopi simpul 2. Operasi mengkopi isi simpul Untuk memahami operasi di atas perhatikan contoh berikut. Pertama kali kita deklarasikan variabel pointernya, yaitu : Var P1, P2 : ^Byte; Posisi P1 dan P2 di memory sekarang ini adalah P1 menunjuk ke tipe data Byte dan P2 juga menunjuk ke tipe data Byte. P1? P2? Lab. Teknik Informatika Struktur Data 2

Jika kita mengisi variabel P1 dengan 5 san P2 dengan 8 maka posisi P1 dan P2 sekarang adalah : P1:=5; P2:=8; P1 5 P2 8 Jika kita memberikan statement : P1:=P2; Maka gambar diatas berubah menjadi : P1 5 P2 8 Dari gambar diatas dapat di perhatikan bahwa sekarang pointer P2 juga menunjuk ke simpul yang ditunjuk oleh pointer P1. Simpul yang tadinya ditunjuk oleh P2 menjadi terlepas. Dalam keadaan seperti ini, karena tidak ditunjuk oleh suatu pointer lain, maka simpul tersebut tidak bisa dimasuki lagi karena lokasi simpul tersebut dalam variabel tidak diketahui lagi (kecuali apabila simpul ini ditunjuk oleh pointer yang lain). Operasi inilah yang disebut dengan operasi mengkopi pointer. adalah : Kita kembali lagi ke gambar sebelumnya. Jika statemen yang diberikan P1^:=P2^; Lab. Teknik Informatika Struktur Data 3

Maka hasil yang kita peroleh adalah : P1 5 P2 5 Operasi inilah selanjutnya yang disebut dengan operasi mengkopi isi simpul. 2.3. Variabel Dinamik Variabel dinamik dibentuk dengan menggunakan variabel pointer yang telah dialokasikan. Pengalokasian variabel ini menggunakan statement New(). Jika kita tidak membutuhkan variabel dinamik yang telah kita bentuk maka kita dapat menghapusnya dari memory dengan menggunakan statemen Dispose(). Sampai saat ini kita baru membentuk satu buah variabel dinamik. Jika kita memakai banyak variabel dinamis maka kita akan membutuhkan banyak variabel pointer. Oleh karena itu ada baiknya jika kita hanya menggunakan satu variabel pointer saja untuk menyimpan banyak data dengan metode yang kita sebut dengan link list. 2.4. Linked List Link list merupakan suatu variabel yang bertipe pointer yang membentuk suatu untaian yang saling berhubungan. Tiap untaian tersebut diletakkan pada memory. Tempat yang disediakan pada suatu area memori tertentu untuk menyimpan data dikenal dengan sebutan Node/Simpul. Linked list juga disebut dengan seranai beranai merupakan suatu variabel pointer yang simpulnya bertipe Record. Gambar 2.1 Simpul-simpul yang membentuk seranai beranai Lab. Teknik Informatika Struktur Data 4

Deklarasi Linked List di dalam Pascal : Type PSimpul = ^Simpul Simpul = Record Info : Tipe Data; Next : PSimpul; Var, : PSimpul; Variabel dan selanjutnya dialokasikan dengan statement New(), yang dihasilnya nantinya merupakan link list yang sudah terbentuk. Ada beberapa hal yang harus diketahui mengenai link list, diantaranya adalah : 1. Link list selalu memiliki pointer petunjuk yang selalu menunjuk pada awal dari list yang disebut. 2. Link list juga selalu memiliki pointer petunjuk menunjuk pada akhir dari list yang disebut, kecuali untuk jenis circular. 3. Setiap simpul yang terbentuk selalu memiliki nilai NIL, kecuali jika simpul tersebut sudah ditunjuk oleh simpul yang lainnya (Link list belum terhubung). 4. Posisi simpul terakhir pada link list selalu bernilai NIL karena ia tidak menunjuk pada simpul yang lainnya, kecuali bentuk circular. 5. Operasi yang dapat dilakukan pada Link List diantaranya adalah : a. Menambah Simpul (di Depan, Belakang dan Tengah). b. Menghapus Simpul (di Depan, Belakang dan Tengah). c. Membaca isi link list (Membaca maju dan mundur). Struktur umum Link List dapat dilihat pada gambar 2.2 dibawah ini: Lab. Teknik Informatika Struktur Data 5

Info next NIL Gambar 2.2 Struktur Umum Link List 2.5. Operasi Pada Link List Ada tiga jenis operasi pada link list, yaitu : 1. Menambah Simpul Menambah simpul pada link list ada tiga macam yaitu menambah di depan, belakang dan tengah, tapi hanya penambahan yang umum dipakai saja oleh link list yang akan dibahas yaitu penambahan simpul dibelakang. Selanjutnya penambahan yang lain akan dibahas pada pertemuan-pertemuan selanjutnya. Penambahan di belakang maksudnya menambahkan simpul-simpul baru pada posisi. Gambar 2.3 ini merupakan ilustrasi penambahan simpul di belakang. Temp A B C D E a. Temp A B C D E b. Temp A B C D E c. Gambar 2.3 Ilustrasi Penambahan Simpul di Posisi Lab. Teknik Informatika Struktur Data 6

Berikut ini merupakan procedure Tambah simpul pada Pascal : Procedure Tambah(Var, : PSimpul; Elemen : Char); Var Temp : PSimpul; New(Temp); Temp^.Info := Elemen; If = NIL Then { Jika Link List Masih Kosong } := Temp Else ^.Next := Temp; { Gambar 2.3.b. } := Temp; { Gambar 2.3.c. } ^.Next := NIL; 2. Menghapus Simpul Operasi menghapus simpul juga ada tiga macam yaitu menghapus simpul di depan, belakang dan tengah. Untuk menghapus sebuah simpul diperlukan satu buah tambahan variabel pointer yaitu variabel bantu yang berguna untuk menunjukkan simpul manakah yang akan dihapus. Procedure Hapus selengkapnya adalah sebagai berikut : Procedure Hapus(Var, : PSimpul; Elemen : Char); Var Temp1, Temp2 : PSimpul; If = NIL Then { Jika Link List Masih Kosong } Writeln( Link List Masih Kosong ) Else If ^.Info = Elemen Then { Simpul Pertama dihapus } Temp2:=; Lab. Teknik Informatika Struktur Data 7

:= Temp2^.Next; Dispose(Temp2); End Else {Menghapus simpul tengah / } {Akhir } Temp1 := { Memulai proses pencarian elemen yang akan dihapus } While (Elemen <> Temp1^.Info) And (Temp1^.Next <> NIL) Do Temp1 := Temp1^.Next; If Temp2 <> NIL Then { Jika simpul ketemu } { Jika Simpul yang di cari ada di tengah } If Temp2 <> Then Temp1^.Next := Temp2^.Next Else := Temp1; ^.Next := NIL; Dispose(Temp2); End Else { Simpul yang akan dihapus tidak ketemu } Writeln( Simpul Tidak di ketemukan! ); 3. Membaca Isi Link List Ada dua jenis untuk membaca isi link list yaitu membaca maju dan membaca mundur. Lab. Teknik Informatika Struktur Data 8

a. Membaca Maju Membaca maju artinya membaca isi seranai beranai mulai posisi sampai ke posisi. Berikut ilustrasi pembacaan isi simpul beserta prosedur pembacaannya : Temp A B C D E Gambar 2.4 Ilustrasi pembacaan dari ke Procedure Baca_Maju( : PSimpul); Var Temp : PSimpul; Temp := ; Repeat Write(Temp^.Info, ); Temp := Temp^.Next Until Temp <> NIL; b. Membaca Mundur Membaca mundur artinya membaca isi seranai beranai mulai posisi sampai ke posisi. Berikut ilustrasi pembacaan isi simpul beserta prosedur pembacaannya : A B C D E Gambar 2.5 Ilustrasi pembacaan dari ke Procedure Baca_Mundur(Temp : PSimpul); Lab. Teknik Informatika Struktur Data 9

If Temp <> NIL Then Baca_Mundur(Temp^.Next); Write(Temp^.Info, ); Ada berbagai jenis linked list, contoh diatas merupakan seranai beranai tunggal (Single Link List). Adapun jenis-jenis link list antara lain adalah : 1. Single Link List / Link list satu arah (One Way List) Disebut demikian karena pada setiap simpul hanya memiliki satu buah field yang berhubungan dengan simpul berikutnya. Dalam pembuatan Single Link List dapat menggunakan 2 metode, yaitu: LIFO (Last In First Out), aplikasinya : Stack (Tumpukan) LIFO adalah suatu metode pembuatan Link List dimana data yang masuk paling akhir adalah data yang keluar paling awal. FIFO (First In First Out), aplikasinya : Queue (Antrian) LIFO adalah suatu metode pembuatan Link List dimana data yang masuk paling awal adalah data yang keluar paling awal juga. Link list ini memiliki beberapa variasi lain diantaranya : a. er Single Link List : Jenis single link list yang memiliki simpul tambahan pada awal simpul yang berguna untuk informasi tambahan. Contoh dibawah ini merupakan header single link list yang pada simpul header-nya berisi informasi mengenai banyaknya simpul di dalam list. 4 A B C D Gambar 2.6 er Single Link List Lab. Teknik Informatika Struktur Data 10

b. Circular Single Link List : Jenis single link list yang tidak pernah mempunyai tail atau tidak pernah NIL selalu berputar = ; A B C D E Gambar 2.7 Circular Single Link List c. er Circular Single Link List : Jenis circular single link list yang memiliki simpul tambahan di awal sebagai informasi tambahan. Contoh dibawah ini merupakan circular header single link list yang pada simpul headernya berisi informasi mengenai banyaknya simpul di dalam list. 4 A B C D Gambar 2.8 er Circular Single Link List 2. Double Link List / Link list dua arah (Two Way List) Link List ini memiliki dua buah field yang digunakan untuk menunjuk ke simpul sebelumnya dan ke simpul sesudahnya. Banyak digunakan untuk mempermudah proses pencarian simpul dalam suatu seranai beranai. Link list ini memiliki beberapa variasi lain diantaranya : a. er Double Link List : Jenis double link list yang memiliki simpul tambahan pada awal simpul yang berguna untuk informasi tambahan. b. Circular Double Link List : Jenis double link list yang tidak pernah mempunyai tail atau tidak pernah NIL selalu berputar = ; c. er Circular Double Link List : Jenis circular double link list yang memiliki simpul tambahan di awal sebagai informasi tambahan. Lab. Teknik Informatika Struktur Data 11

LAPORAN PENDAHULUAN 1. Jelaskan pengertian dari: a. Variabel Statis b. Variabel Dinamis c. Variabel Pointer. 2. Bagaimana cara pendefinisian Variabel Pointer & Variabel Dinamis. 3. Apa yang dimaksud dengan, dan NIL. 4. Jelaskan mengenai operasi pada pointer. 5. Jenis-jenis Link List dan operasi pada link list. MATERI PRAKTIKUM 1. Mengetahui Variabel Statis, Dinamis dan Pointer terutama perbedaan diantara ketiganya. 2. Mengetahui jenis-jenis link list (keseluruhan jenisnya) minimal dengan menggunakan bagan/gambar atau juga dapat dengan program sederhana. 3. Membuat program-program sederhana berupa pendefinisan link list dan operasi-operasi link list. 4. Membuat program menu pulldown dengan menggunakan link list. Menu pulldown terdiri dari Create link list, insert link list, delete link list, search link list dan exit main menu. Menu-menunya diisi semua kecuali search link list. 5. Nilai K (Keterampilan) didapat jika praktikan dapat mengisi menu pulldown search link list. LAPORAN AKHIR Buat Algoritma dan program sederhana dari Link List. Lab. Teknik Informatika Struktur Data 12