Array VS Linked List

dokumen-dokumen yang mirip
KONSEP POINTER DAN LINKED LIST

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

STRUKTUR DATA single linked list non circular

Struktur Data II. Single Linked List - Non circular

KONSEP POINTER DAN LINKED LIST

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

STRUKTUR DATA (2) Single Linked List

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

Tugas Studi Kasus. Linked List SLLNC dengan Head & Tail

Pertemuan 4. Single Linked List non Circular Menggunakan Head dan Tail

Praktikum Algoritma dan Struktur Data

DOUBLE LINKED LIST. Danang Wahyu Utomo Danang Wahyu Utomo, M.Kom, M.CS

MODUL 6 SINGLE & DOUBLE LINKED LIST

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA DOUBLE LINKED LIST CIRCULAR

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

SINGLE LINKED LIST (NON CIRCULAR)

Tumpukan (Stack) Stack bersifat LIFO (Last In First Out) LIFO Data yang terakhir masuk ke dalam stack menjadi data yang pertama keluar dari stack

Antrian (Queue) Susunan koleksi data dimana proses penambahan data (add) dilakukan dari belakang dan penghapusan data (delete) dilakukan dari depan.

//membuat sebuah tipe data baru yang terdiri dari. //field data bertipe integer //field next merupakan pointer dari list

Function nama dipisahkan

LAPORAN PRAKTIKUM IX. Oleh:

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA

Modul Praktikum Algoritma dan Struktur Data

BAB IX LINKED LIST (SENARAI BERANTAI)

DIKTAT PRAKTIKUM ALGORITMA DAN STRUKTUR DATA

Algoritma dan Struktur Data

Tutorial - Single Linked List

Algoritma dan Struktur Data. Ramos Somya, S.Kom., M.Cs.

BAB IX LINKED LIST (SENARAI BERANTAI)

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

Single Linked List (1)

LIST. Dewi Sartika, M.Kom

ALGORITMA & PEMROGRAMAN

List Linear (Linked List) Farah Zakiyah Rahmanti 2014

Algoritma dan Struktur Data. Ramos Somya

05. Double Linked List

Algoritma dan Struktur Data. Pertemuan 7 Linked List

STACK atau TUMPUKAN. Pertemuan 5 STACK (TUMPUKAN)

Algoritma Pemrograman & Struktur Data

Linked List. Bandung 2013

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

Algoritma dan Struktur Data. Pertemuan 9 Circular Linked List

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

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

BAB II Senarai Berantai (Linked List)

LAPORAN PRAKTIKUM RESMI QUEUE

Lecture Notes On Algorithms and Data Structures. Oleh Thompson Susabda Ngoen

Algoritma dan Struktur Data. Linked List

A. TUJUAN PEMBELAJARAN

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

DOUBLY LINKED LIST PROGRAM : DOUBLY LINKED LIST (TAMBAH SIMPUL DI BELAKANG)

PERTEMUAN KE 11. Linked List. Apa Itu Linked List?

04. Single Linked List

STRUKTUR DATA POKOK BAHASAN - 8 QUEUE ( ANTRIAN)

ALGORITMA DAN STRUKTUR DATA

Linked List dan Implementasinya dalam Bahasa Java

SENARAI BERANTAI (LINK LIST)

MODUL PRAKTIKUM STRUKTUR DATA FAKULTAS ILMU KOMPUTER UNIVERSITAS ESA UNGGUL

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

STRUKTUR DATA POKOK BAHASAN - 7 STACK ( TUMPUKAN )

Review : Sifat Implementasi Linear List dengan Array

Linked List 6.3 & 7.3 NESTED LOOP

STRUKTUR DATA. Literatur

List akan disimpan dalam bagian memori komputer yang dinamakan HEAP

Modul Praktikum Algoritma dan Struktur Data BAB 6 LINKED LIST

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

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

Penambahan Simpul (Node)

Pertemuan 7. REVIEW dan QUIS

Dinamik Linked List. hari bulan tahun

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

# NINE Queue dengan Array

DIG1G3 Implementasi Struktur Data

Praktikum Algoritma dan Struktur Data 2010

A. TUJUAN PEMBELAJARAN

LIST BERKAIT(LINKED LIST)

QUEUE (ANTREAN) Prinsip Antrean : FIFO (First In First Out) FCFS (First Come First Serve) Yang Tiba lebih awal Maka akan dilayani Terlebih Dahulu

LINKED LIST. Double Linked List adalah :

BAB IV Antrian(Queue)

Struktur Data... Teknik-teknik manipulasi data: tambah (add) hapus (delete) edit pengurutan pohon pencarian

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

TIM ASISTEN PRAKTIKUM ALGORITMA DAN PEMROGRAMAN 2017

Algoritma dan Struktur Data. Pertemuan 8 Doubly Linked List

Algoritma dan Struktur Data. Ramos Somya

ALGORITMA DAN STRUKTUR DATA POINTER DAN FUNCTION

Algoritma Pemrograman & Struktur Data

Stack. Pointer ke node pertama dari stack. Bagian deklarasi di atas kita asumsikan disimpan menjadi sebuah header file dengan nama stack.

PRAKTIKUM ALGORITMA & PEMROGRAMAN III MODUL_06 Stack (Tumpukan)

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

IT234 Algoritma dan Struktur Data. Tree

Praktikum 3. Konsep double linked list Struktur double linked list Implementasi double linked list dalam Bahasa C

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

MODUL PRAKTIKUM STRUKTUR DATA. Dosen Pengampu M.Bahrul Ulum, S.Kom., M.Kom. Asisten Lab Mia Kastina PROGRAM STUDI TEKNIK INFORMATIKA

Algoritma Dan Struktur Data II

Struct Lanjutan: Studi Kasus

E STRUKTUR DATA & E PRAKTIK STRUKTUR DATA. Pointer & Function. Alfa Faridh Suni, S.T., M.T. PTIK

REPRESENTASI FISIK LIST LINEAR

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA LINKED LIST (BAGIAN 1)

Transkripsi:

Linked List Linked List adalah salah satu bentuk struktur data, berisi kumpulan data (disebut node atau simpul) biasanya dalam bentuk struct, yang tersusun secara sekuensial dan saling menyambung. Linked List sering disebut juga Senarai Berantai. Linked List diimplementasikan menggunakan variabel pointer, sehingga cacah data yang disimpan dapat bersifat dinamis.

Array VS Linked List

Linked List (Single Linked List Non-Circular - SLLNC) Pengertian: Single: field pointer-nya hanya satu buah dan satu arah. Linked List: node-node tersebut saling terhubung satu sama lain. Setiap node pada linked list mempunyai field yang berisi pointer ke node berikutnya, dan juga memiliki field yang berisi data. non Circular: pada akhir node maka pointernya menunjuk NULL, digunakan sebagai kondisi berhenti saat membaca isi linked list.

Single Linked List non-circular deklarasi (1/3) Contoh deklarasi Node typedef struct TNode{ int data; TNode *next; ; Penjelasan: Pembuatan struct bernama TNode yang berisi 2 field, yaitu field data bertipe integer dan field next yang bertipe pointer dari TNode Setelah pembuatan struct, buat variabel head yang bertipe pointer dari TNode yang berguna sebagai kepala linked list.

Single Linked List non-circular deklarasi (2/3) Menggunakan keyword new untuk menyiapkan sebuah node baru berserta alokasi memorinya, kemudian node ini diisi data dan pointer nextnya menunjuk ke NULL. TNode *baru; baru = new TNode; baru->data = databaru; baru->next = NULL;

Single Linked List non-circular deklarasi (3/3) - contoh program

inisialisasi (1/2) Dibutuhkan sebuah variabel pointer yaitu head (kepala) Head selalu menunjuk pada node pertama Manipulasi linked list tidak bisa dilakukan langsung ke node yang dituju, harus menggunakan suatu pointer penunjuk ke node pertama dalam linked list (disini adalah head). Deklarasinya adalah: TNode *head;

inisialisasi (2/2) Fungsi Inisialisasi Single LinkedList void init(){ head = NULL; Function untuk mengetahui kosong tidaknya Single LinkedList Jika pointer head tidak menunjuk pada suatu node, maka data masih kosong int isempty(){ if(head == NULL) return 1; else return 0;

menambah data di depan Menambah data di depan Pada saat pertama kali (saat data masih kosong), maka penambahan data dilakukan dengan cara node head ditunjukkan ke node baru tersebut. Untuk menambah data selanjutnya dengan cara menambah node baru yang akan dikaitan di node paling depan Prinsip mengkaitkan node baru dengan head, kemudian head akan menunjuk pada data baru tersebut sehingga head tetap menjadi data terdepan.

menambah data di depan - ilustrasi

menambah data di depan - contoh program void insertdepan(int databaru){ TNode *baru; baru = new TNode; baru->data = databaru; baru->next = NULL; if(isempty()==1){ head=baru; head->next = NULL; else { baru->next = head; head = baru; printf( Data masuk\n );

menambah data di belakang Menambah data di belakang Pada saat pertama kali (saat data masih kosong), maka penambahan data dilakukan dengan cara node head ditunjukkan ke node baru tersebut. Untuk menambah data berikutnya, menambah data di belakang lebih sulit karena butuh pointer bantu untuk mengetahui node paling belakang. Selanjutnya pointer bantu dikaitkan dengan node baru. Catatan untuk mengetahui data paling belakang perlu digunakan proses perulangan.

menambah data di belakang ilustrasi (1/2)

menambah data di belakang ilustrasi (2/2)

menambah data di belakang - contoh program void insertbelakang (int databaru){ TNode *baru,*bantu; baru = new TNode; baru->data = databaru; baru->next = NULL; if(isempty()==1){ head=baru; head->next = NULL; else { bantu=head; while(bantu->next!=null){ bantu=bantu->next; bantu->next = baru; printf("data masuk\n );

menampilkan seluruh isi list Menampilkan seluruh isi list dengan cara menelusuri linked list satu-persatu dari awal sampai akhir node menggunakan pointer bantu. Catatan pointer head yang menjadi tanda awal linked list tidak boleh berubah atau berganti posisi. Penelusuran dilakukan terus sampai dengan node terakhir menunjuk ke nilai NULL. Jika tidak NULL, maka node bantu akan berpindah ke node selanjutnya dan membaca isi data menggunakan field next. Catatan jika head masih NULL berarti data masih kosong.

menampilkan seluruh isi list - contoh program - ilustrasi void tampil(){ TNode *bantu; bantu = head; if(isempty()==0){ while(bantu!=null){ cout<<bantu->data<<" "; bantu=bantu->next; printf( \n ); else printf( Masih kosong\n );

menghapus data pertama (terdepan) Menghapus node/data pertama (terdepan) yang ditunjuk oleh head pada linked list. Menghapus node terdepan tidak boleh dilakukan jika node sedang ditunjuk oleh pointer, sehingga harus menggunakan pointer lain untuk menunjuk node yang akan dihapus, contoh pointer hapus, kemudian menghapus pointer hapus menggunakan perintah delete. Catatan sebelum data terdepan dihapus, head harus menunjuk ke node sesudahnya agar list tidak putus. Head akan menunjuk ke node data terdepan yang baru. Jika head NULL maka berarti data telah kosong.

menghapus data pertama (terdepan) - contoh program - ilustrasi Function untuk menghapus data terdepan void hapusdepan (){ TNode *hapus; int d; if (isempty()==0){ if(head->next!= NULL){ hapus = head; d = hapus->data; head = head->next; delete hapus; else { d = head->data; head = NULL; printf( %d terhapus\n,d); else cout<<"masih kosong\n";

menghapus data terakhir (paling belakang) Membutuhkan 2 pointer tambahan yaitu: pointer bantu dan pointer hapus. Pointer hapus untuk menunjuk node yang akan dihapus. Pointer bantu untuk menunjuk node sebelum node yang dihapus yang kemudian menjadi node terakhir. Pointer bantu selalu bergerak sampai sebelum node yang akan dihapus, kemudian pointer hapus diletakkan setelah pointer bantu. Selanjutnya pointer hapus akan dihapus, sedangkan pointer bantu menunjuk ke NULL.

menghapus data terakhir (paling belakang) - ilustrasi

menghapus data terakhir (paling belakang) contoh program Function untuk menghapus data paling belakang void hapusbelakang(){ TNode *hapus,*bantu; int d; if (isempty()==0){ if(head->next!= NULL){ bantu = head; while(bantu->next->next!=null){ bantu = bantu->next; hapus = bantu->next; d = hapus->data; bantu->next = NULL; delete hapus; else { d = head->data; head = NULL; printf( %d terhapus\n,d); else printf( Masih kosong\n );

menghapus semua data (semua elemen linked list) contoh program Function untuk menghapus semua elemen Linked List void clear(){ TNode *bantu,*hapus; bantu = head; while(bantu!=null){ hapus = bantu; bantu = bantu->next; delete hapus; head = NULL;

Sumber Referensi James Roberge, Stefan Brandle, dan David Whittington, 2003, C++ Data Structures 2nd Edition, Jones and Bartlett Publishers, Inc., Sudbury, Massachusetts. Antonius Rachmat Chrismanto UKDW Yogyakarta. P. Insap Santosa, 1992, Struktur Data Menggunakan Turbo Pascal 6.0, Penerbit Andi, Yogyakarta. Berbagai sumber dari Internet.