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

dokumen-dokumen yang mirip
ALGORITMA & PEMROGRAMAN

Linked List. Bandung 2013

LOGO STRUKTUR DATA QUEUE

QUEUE (ANTRIAN) Struktur Data - Queue

Lab. Teknik Informatika Struktur Data 1

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

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

BAB IX LINKED LIST (SENARAI BERANTAI)

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

BAB IX LINKED LIST (SENARAI BERANTAI)

SINGLE LINKED LIST (NON CIRCULAR)

3. DOUBLE LINK LIST. Lab. Teknik Informatika Struktur Data 1

KERUGIAN DAN KEUNTUNGAN LINKED LIST

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

KONSEP POINTER DAN LINKED LIST

List akan disimpan dalam bagian memori komputer yang dinamakan HEAP

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

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

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

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

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

BAB 10 POINTER 5.1 Tujuan 5.2 Pengertian Pointer Perubah dinamis pointer

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

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

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

STACK (TUMPUKAN) Tumpukan uang koin Tumpukan kotak Tumpukan Buku. Gambar 1. Macam-macam tumpukan

KONSEP POINTER DAN LINKED LIST

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

List Linier (Bag. I) IF2121/Algoritma dan Struktur Data Sem. I 2016/ /25/2017 IF2121/Sem I 2017/2018 1

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

MODUL. Pointer. Modul Praktikum C++ Dasar Pemrograman Komputer JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNIK

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

Algoritma dan Struktur Data. Pertemuan 7 Linked List

Pointer. Pengertian. Struktur Data Pascal

Algoritma dan Struktur Data. Pertemuan 9 Circular Linked List

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

Bagian I. Studi Kasus [82] Tanda tangan:

LIST. Dewi Sartika, M.Kom

List Linier. IF2030/Algoritma dan Struktur Data. 11/6/2009 FNA+WDS/IF2030/Sem

ALGORITMA DAN STRUKTUR DATA

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

SENARAI BERANTAI (LINK LIST)

5. QUEUE (ANTRIAN) TUJUAN PRAKTIKUM

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

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

Single Linked List (1)

STRUKTUR DATA (2) Single Linked List

LIST LINIER 1. DEFINISI

MODUL PRAKTIKUM STRUKTUR DATA Modul ke-1, Pertemuan ke-1 Nama file : P01-XXX (XXX adalah 3 digit terakhir NIM) Deskripsi: Senarai, Traversal

Struktur Data. Queue (Antrian)

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING)

POINTER PADA PASCAL. <nama_var> : ^<tipe_data>; <nama_var> : pointer;

Algoritma dan Struktur Data. Linked List

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

Double Linked List. Brigida Arie Minartiningtyas, M.Kom

4. STACK / TUMPUKAN TEORI PENUNJANG

Array (Tabel) Tim Pengajar KU1071 Sem /11/3 TW/KU1071 1

{ Program Pointer Pertama } { Program Pointer Single Linklist }

Algoritma dan Pemrograman Searching/Pencarian

Algoritma dan Struktur Data

LATIHAN UTS Tim Pengajar KU1071 Sem

IKG2A3/ Pemrograman Terstruktur 2

List Linear (Linked List) Farah Zakiyah Rahmanti 2014

Array VS Linked List

Pencarian pada Array. Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer UDINUS Semarang

DIKTAT KULIAH STRUKTUR DATA. Disusun oleh: Sri Primaini A.

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

BAB 1 PENGANTAR KE STRUKTUR DATA

Review : Sifat Implementasi Linear List dengan Array

STRUKTUR DATA single linked list non circular

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

Algoritma Pemrograman & Struktur Data

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN

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

BAB VII SENARAI BERANTAI (List)

Algoritma Shell Sort Ascending Dan Binary Sequential Search Menggunakan C

LIST BERKAIT(LINKED LIST)

MODUL 6 SINGLE & DOUBLE LINKED LIST

MODUL 1. Struktur Bahasa PASCAL secara umum

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

Langkah Mudah Belajar Struktur Data Menggunakan C/C++

4 LINKED LIST. 4.1 Istilah-istilah 1. Simpul Simpul terdiri dari dua bagian, yaitu : Bagian data Bagian pointer yang menunjuk ke simpul berikutnya.

QUEUE (ANTREAN) Operasi Antrean : FIFO (First In First Out) Elemen yang pertama masuk merupakan elemen yang pertama keluar.

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

MODUL PRAKTIKUM STRUKTUR DATA

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

Pertemuan 7. REVIEW dan QUIS

BAB II STACK Atau TUMPUKAN

BAB III QUEUE (ANTRIAN)

CCH1A4 / Dasar Algoritma & Pemrogramanan

Single Linked List. Single Linked List

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

Sebuah algoritma tidak saja harus benar, tetapi juga harus mangkus (efisien). Algoritma yang bagus adalah algoritma yang mangkus.

Struktur Data. PDE - Struktur Data 1

2 SENARAI/LIST BERANTAI GANDA

IKG2A3/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Variasi List Linier

TIPE DATA, VARIABLE, dan OPERATOR DELPHI

Transkripsi:

ARRAY DINAMIS Sebelumnya telah dijelaskan mengenai variable bertipe array (array statis), suatu tipe data yang bersifat statis (urutan dan ukuran sudah pasti). Kelemahan dari array statis adalah penggunaan ruang memori yang sudah digunakan tidak dapat dihapus apabila nama variable array tersebut sudah tidak digunakan kembali dalam suatu program (penyebab kemubaziran). Untuk pemecahannya maka digunakan struktur data dinamis dengan menggunakan variable dinamis. Variabel dinamis tidak dapat dideklarasikan secara eksplisit seperti halnya variable statis dan tidak dapat ditunjuk oleh identifier secara langsung, tetapi dapat ditunjuk secara khusus oleh variable dinamis yaitu POINTER. Deklarasi secara umum untuk tipe data POINTER adalah sebagai berikut :. Pengenal = Simpul Simpul = 2. (Nama var) : ( data) Keterangan : Pengenal : Nama pengenal yang menyatakan data berupa pointer Simpul : Menyatakan nama simpul : Tipe data dari simpul : Tanda yang menyatakan bahwa pengenal memiliki tipe data pointer Contoh :. Point = Data Data = Record < Nama_Mhs : String, Jurusan : String, Semester : String > Endrecord DataMhs : Point 2. Jumlah_data : Integer Nama_Siswa : String Penjelasan: DataMhs merupakan variabel bertipe pointer Ketika program dikompilasi, variable DataMhs akan menempati lokasi tertentu dalam memori dan variabel tersebut belum menunjuk kesuatu simpul. Pointer yang belum menunjuk kesuatu simpul, nilainya dinyatakan sebagai nil guna mengalokasikan simpul dalam memori. Statemen yang digunakan untuk membuat sebuah simpul adalah Alloc (variabel)

Catatan : Variabel merupakan nama peubah yang bertipe pointer Misal : Alloc (DataMhs); {Berarti kita membuat sebuah simpul yang ditunjuk oleh DataMhs} DataMhs??? Nil Keterangan : Masih tanda tanya karena belum terisi data Operasi pada Pointer. Mengcopy pointer, artinya bahwa sebuah simpul akan ditunjuk oleh lebih dari sebuah pointer. Contoh : Point = Data Data = Record < Nama_Mhs : String Jurusan : String> Endrecord T, T 2 : Point; Alloc (T ); T?? T. NamaMhs T. Jurusan Benny Informatika Alloc (T 2 ); T 2 Akibatnya simpul diatas menjadi :?? T Benny Informatika T 2?? Apabila T 2 T T Benny Informatika T 2?? 2. Mengcopy isi simpul, artinya bahwa dua/lebih simpul ditunjuk leh pointer yang berbeda tetapi mempunyai isi yang sama. Apabila T 2 T ; maka dapat diillustrasikan sebagai berikut: T Benny Informatika T 2 Benny Informatika. Menghapus pointer Apabila pointer dihapus, maka lokasi semula yang ditempati oleh simpul yang ditunjuk oleh pointer tersebut akan bebas sehingga bisa digunakan oleh variable lain. Bentuk : Dealloc (Variabel) Misal : Dealloc (T )

LINKED LIST Struktur ini terdiri dari rangkaian elemen yang saling berhubungan / berkaitan, dimana setiap elemen dihubungkan dengan elemen lainnya oleh sebuah pointer. Pointer, sel yang nilainya merupakan alamat sel yang lain dimana sel yang lain itu dapat berupa data atau berupa pointer juga Setiap elemen dalam linked list selalu berisi pointer Deklarasi Linked List nama_pointer = Simpul Point = Data Simpul = Record Data = Record medan_data : tipedata <Info : char medan_sambungan : Namapointer Next : Point > EndRecord Endrecord nama_var_pointer : nama_pointer awal, akhir: Point Istilah istilah Simpul, terdiri dari dua bagian : a. Bagian/medan data (info) b. Bagian/medan sambungan (pointer yang menunjuk kesimpul berikutnya) (First), variable yang berisi alamat yang menunjuk lokasi simpul pertama linked list A Nil / Null, Tidak bernilai yaitu menyatakan tidak mengacu kealamat manapun. Nil, sebuah simpul yang tidak menunjuk pada simpul terakhir A B Linked List kosong dikenali dengan nil Elemen terakhir linked list dikenali dengan :.Next Nil Linked List terdiri dari macam yaitu : a. Single Linked List b. Double Linked List c. Circular Linked List

I. Single Linked List Adalah linked list dengan simpul berisi satu link / pointer yang mengacu ke simpul berikutnya. Skema Simpul Single Linked List : Operasi operasi pada single linked list :. Penciptaan dan akhir diberi nil. 2. Penyisipan a. Penyisipan didepan - List kosong {=nil} - List tidak kosong { Nil} Mula-mula keadaan list sebagai berikut: 2 4 2 4 4 2 b. Penyisipan di tengah - List Kosong { = Nil} (Sama dengan penyisipan di depan) - List tidak kosong { Nil} Mula-mula keadaan list sebagai berikut: 4 2 Asumsi data : akan disisipkan setelah data 4

Bantu 4 2 Bantu 4 2 4 2 c. Penyisipan di akhir - List kosong { = Nil} (Sama dengan penyisipan di depan) - List tidak kosong ( Nil} Mula-mula keadaan list sebagai berikut: 2 4 2 4 2 4

Procedure sisip_depan_single(input elemen : tipedata, I/O awal, akhir : nama_pointer) {I.S. : data yang akan disisipkan (elemen), pointer penunjuk awal dan pointer penunjuk akhir sudah terdifinisi} {F.S. : menghasilkan satu simpul yang disisipkan di depan pada single linked list} baru : nama_pointer Algoritma : Alloc(baru) baru.info elemen If (awal = nil) baru.next nil akhir baru baru.next awal awal baru EndProcedure Procedure sisip_belakang_single(input elemen : tipedata, I/O awal, akhir : nama_pointer) {I.S. : data yang akan disisipkan (elemen), pointer penunjuk awal dan pointer penunjuk akhir sudah terdifinisi} {F.S. : menghasilkan satu simpul yang disisipkan di belakang pada single linked list} baru : nama_pointer Algoritma : Alloc(baru) baru.info elemen baru.next nil If (awal = nil) awal baru akhir.next baru akhir baru EndProcedure Procedure sisip_tengah_single(input elemen : tipedata, I/O awal, akhir : nama_pointer) {I.S. : data yang akan disisipkan (elemen), pointer penunjuk awal dan pointer penunjuk akhir sudah terdifinisi} {F.S. : menghasilkan satu simpul yang disisipkan di tengah pada single linked list} Procedure sisip_belakang_single(input elemen : tipedata, I/O awal, akhir : nama_pointer) baru,bantu : nama_pointer ketemu : boolean datasisip : tipedata

Algoritma : If (awal = nil) Alloc(baru) baru.info elemen baru.next nil awal baru akhir baru {Pencarian menggunakan metode Sequential dengan boolean} Input(datasisip) bantu awal ketemu false While (not ketemu and bantu nil) do If (datasisip = bantu.info) ketemu true bantu bantu.next EndWhile If (ketemu) Alloc(baru) baru.info elemen If (bantu = akhir) sisip_belakang_single(elemen,awal,akhir) baru.next bantu.next bantu.next baru Output( Data yang akan disisipkan tidak ada ); EndProcedure Procedure isi_elemen(output elemen : tipedata) {I.S. : user memasukkan data yang akan disisipkan (elemen)} {F.S. : mengahsilkan data yang akan disisipkan (elemen)} Algoritma : EndProcedure Input(elemen)

{Algoritma Utama} Algoritma_penyisipan_Single_Linked_List {prototype} Procedure isi_elemen(output elemen : tipedata) Procedure sisip_depan_single(input elemen : tipedata, I/O awal, akhir : nama_pointer) Procedure sisip_belakang_single(input elemen : tipedata, I/O awal, akhir : nama_pointer) Procedure sisip_tengah_single(input elemen : tipedata, I/O awal, akhir : nama_pointer) {deklarasi} nama_pointer = simpul simpul = Record < info : tipedata, next : nama_pointer> EndRecord awal, akhir : nama_pointer menu : integer elemen : tipedata Algoritma : {penciptaan list} awal nil akhir nil {pointer penunjuk} {penyisipan} Repeat output( Menu Pilihan ) output( ========== ) output(. Sisip Depan ) output( 2. Sisip Tengah ) output(. Sisip Belakang ) output( 0. Keluar ) Input(menu) Depend on (menu) (menu = ) : isi_elemen(elemen) sisip_depan_single(elemen, awal, akhir) (menu = 2) : isi_elemen(elemen) sisip_tengah_single(elemen, awal, akhir) (menu = ) : isi_elemen(elemen) sisip_belakang_single(elemen, awal, akhir) EndDepend Until (menu = 0)