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

dokumen-dokumen yang mirip
KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

Struktur Data II. Single Linked List - Non circular

STRUKTUR DATA (2) Single Linked List

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

Tugas Studi Kasus. Linked List SLLNC dengan Head & Tail

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

KONSEP POINTER DAN LINKED LIST

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

Praktikum Algoritma dan Struktur Data

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

Array VS Linked List

STRUKTUR DATA single linked list non circular

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

MODUL 6 SINGLE & DOUBLE LINKED LIST

SINGLE LINKED LIST (NON CIRCULAR)

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA DOUBLE LINKED LIST CIRCULAR

Algoritma dan Struktur Data

LAPORAN PRAKTIKUM IX. Oleh:

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

Single Linked List (1)

BAB IX LINKED LIST (SENARAI BERANTAI)

List Linear (Linked List) Farah Zakiyah Rahmanti 2014

Tutorial - Single Linked List

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA

05. Double Linked List

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

Algoritma Pemrograman & Struktur Data

LIST. Dewi Sartika, M.Kom

ALGORITMA DAN STRUKTUR DATA

MODUL PRAKTIKUM STRUKTUR DATA FAKULTAS ILMU KOMPUTER UNIVERSITAS ESA UNGGUL

STACK dan QUEUE MODUL PRAKTIKUM STRUKTUR DATA 09 UNIVERSITAS KRISTEN DUTA WACANA. Daftar Isi: Stack dan Queue. Latihan soal. Guided.

04. Single Linked List

Algoritma dan Struktur Data. Linked List

Algoritma dan Struktur Data. Ramos Somya

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

DIKTAT PRAKTIKUM ALGORITMA DAN STRUKTUR DATA

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

Struct Lanjutan: Studi Kasus

Linked List 6.3 & 7.3 NESTED LOOP

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

A. TUJUAN PEMBELAJARAN

BAB II Senarai Berantai (Linked List)

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

SENARAI BERANTAI (LINK LIST)

Algoritma dan Struktur Data. Pertemuan 9 Circular Linked List

LIST BERKAIT(LINKED LIST)

List akan disimpan dalam bagian memori komputer yang dinamakan HEAP

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

Modul Praktikum Algoritma dan Struktur Data BAB 6 LINKED LIST

Lab. Teknik Informatika Struktur Data 1

REPRESENTASI FISIK LIST LINEAR

BAB IX LINKED LIST (SENARAI BERANTAI)

Dinamik Linked List. hari bulan tahun

Pertemuan 7. REVIEW dan QUIS

Algoritma dan Struktur Data. Pertemuan 7 Linked List

Penambahan Simpul (Node)

A. TUJUAN PEMBELAJARAN

LINKED LIST. TUJUAN UMUM Memahami konsep linked list TUJUAN KHUSUS

03 LINKED LIST. Slide 0 voice. Slide 1 voice. Slide 2 voice. Thompson Susabda Ngoen 1 P a g e

BAB IV Antrian(Queue)

Langkah Mudah Belajar Struktur Data Menggunakan C/C++

// Created by Andri Andriyan // Linked List. #include <stdlib.h> #include <conio2.h> #include <stdio.h>

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

STRUKTUR DATA POKOK BAHASAN - 8 QUEUE ( ANTRIAN)

DIG1G3 Implementasi Struktur Data

ALGORITMA DAN STRUKTUR DATA POINTER DAN FUNCTION

Apakah Anda sering kesulitan untuk

MODUL PEMROGRAMAN 2. Queue (Antrian)

Linked List dan Implementasinya dalam Bahasa Java

LINKED LIST. Double Linked List adalah :

List Berkait(Linked List) Overview. Tujuan Instruksional

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

Search And Insert Problem (Sorted Double Linkedlist Solution)

Review : Sifat Implementasi Linear List dengan Array

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

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

LAPORAN PRAKTIKUM RESMI QUEUE

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

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

ALGORITMA & PEMROGRAMAN

Struktur Data Array. Rijal Fadilah S.Si

Algoritma dan Struktur Data. Pertemuan 8 Doubly Linked List

KERUGIAN DAN KEUNTUNGAN LINKED LIST

STL DLL STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 3 : 29 Juni 2015

Pengenalan Struktur Data. Farah Zakiyah Rahmanti 2014

Praktikum Algoritma dan Struktur Data 2010

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

STRUKTUR DATA. Literatur

ALGORITMA DAN STRUKTUR DATA ARRAY STACK DAN QUEUE

Linked List. Bandung 2013

STACK DAN QUEUE. Pengertian Stack Dan Queue. stack & queue. Last saved by KENKEINA Created by KENKEINA

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

STACK atau TUMPUKAN. Pertemuan 5 STACK (TUMPUKAN)

STL DLL STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 3 : 27 Juni 2016

Single Linked List (2)

Algoritma Shell Sort Ascending Dan Binary Sequential Search Menggunakan C

A. TUJUAN PEMBELAJARAN

Transkripsi:

SINGLE LINKED LIST NON CIRCULAR (SENARAI BERANTAI TUNGGAL TIDAK BERPUTAR) Dilustrasikan sebagai kereta yang mempunyai gerbong-gerbong. Pertama tama kita membuat tipe data baru dari gerbong kereta tersebut. //Gerbong berisi data dan pointer next. typedef struct gerbong { int data; gerbong *next; ; Kemudian kita membuat variable baru bertipe pointer. gerbong *bantu; gerbong *head; //Variable head selalu berada di awal rangkaian. Diibaratkan seperti lokomotif kereta api yang selalu berada didepan. gerbong *baru; //Untuk menampung inputan data baru yang ingin dimasukkan. gerbong *hapus; //Untuk menampung inputan data yang ingin dihapus. gerbong *tail; //Variable head selalu berada di akhir rangkaian gerbong. Selanjutnya, membuat sebuah NODE head yang diinisialisasi pada main. head = new gerbong; //pembentukan node gerbong --- PEMBENTUKKAN NODE (GERBONG) --- Digunakan keyword new yang berarti mempersiapkan sebuah node baru berserta alokasi memorinya, kemudian node tersebut diisi data dan pointer nextnya ditunjuk ke NULL. Pembentukan node tidak dapat dilakukan sekaligus namun harus satu persatu, hal ini berkaitan dengan bagaimana cara menyambungkan antar node tersebut. Contoh : baru = new gerbong; baru->data = databaru; //isi field data dengan databaru. baru->next = NULL; //pointer milik baru diarahkan ke NULL

Tambah Depan Penambahan node baru akan dikaitkan di gerbong paling depan. Tetapi jika data masih kosong, maka penambahan data dilakukan denagn cara menunjuk head pada gerbong tersebut. Ilustrasi Tambah Depan : Data baru ditambahkan Baru digandengkan dengan head Head berpindah posisi menjadi di depan. Fungsi tambah depan sebagai berikut (inputan dinamis dari user) : void tambahdepan(int databaru) { baru = new gerbong; baru->data = databaru; baru->next = NULL; //pointer milik baru diarahkan ke NULL if(head == NULL) { head = baru; head->next = NULL; tail = baru; tail->next = NULL; baru->next = head; head = baru; printf("data masuk\n");

Tambah Belakang Penambahan data dibelakang akan selalu dikaitkan dengan tail karena tail selalu berada di paling belakang gerbong. setelah dikaitkan dengan node, maka node tersebut menjadi tail yang baru. Ilustrasi Tambah Belakang :??? Fungsi tambah belakang sebagai berikut (inputan dinamis dari user) : void tambahbelakang(int databaru) { baru = new gerbong; baru->data = databaru; baru->next = NULL; if(head == NULL) { head = baru; head->next = NULL; tail = baru; tail->next = NULL; tail->next = baru; tail = baru; printf("data masuk\n"); Check this out Buatlah fungsi tambah tengah. Misalnya ada 15 gerbong, maka data baru akan ditambahkan setelah gerbong ke 7. Jika ada 10 gerbong, maka data baru akan ditambahkan setelah gerbong ke 5. --- PENGHAPUSAN NODE --- Pada senarai berkepala, penghapusan sebuah list dilakukan jika ada list lain yang bukan list "head" dalam barisan senarai tersebut. Dengan kata lain, list yang digunakan sebagai "head" tidak boleh dihapus, "head harus dipindahkan terlebih dahulu. Keyword yang digunakan adalah delete. Hapus Depan Fungsi ini akan menghapus data terdepan yang ditunjuk oleh head. Penghapusan tidak boleh dilakukan jika keadaaanya ditunjuk oleh pointer. Oleh karena itu, dilakukan penunjukan terlebih dahulu dengan pointer hapus yang menujuk pada head. Kemudian dilakukan pergeseran node sehingga node setelah head menjadi head yang baru. Kemudian

menghapus pointer hapus dengan perintah delete. Jika tail masih NULL maka data masih kosong. Ilustrasi Hapus Depan : Fungsi hapus depan : void hapusdepan() { if(head == NULL) { printf("data belum ada"); else if(head->next!=null) { hapus = head; head = head->next; delete hapus; Hapus Belakang Karena adanya tail, maka penghapusan data dibelakang lebih mudah dilakukan. Penghapusan node tidak boleh dilakukan jika keadaan node sedang ditunjuk oleh pointer. Oleh karena itu dilakukan penujukan terlebih dahulu variable hapus pada tail. Kemudian dibutuhkan pointer bantu untuk membantu pergeseran dari head ke node berikutnya sampai sebelum tail, sehingga tail dapat ditunjukkan ke bantu tersebut, dan bantu tersebut akan menjadi tail yang baru. Setelah itu hapus pointer hapus dengan menggunakan perintah delete. Jika tail masih NULL maka berarti list masih kosong!

Ilustrasi Hapus Belakang :??? Fungsi hapus belakang : void hapusbelakang() { bantu = head; if(head==null) { printf("data belum ada"); else if(head == tail) { tail = NULL; hapus = tail; while(bantu->next!= tail) { bantu = bantu->next; tail = bantu; tail->next = NULL; delete hapus; Check this out Buatlah fungsi hapus tengah. --- PENCETAKKAN NODE --- Program untuk mencetak : bantu=head; printf("\n"); while(bantu!= NULL) { printf(" %i ", bantu->data); bantu = bantu->next; printf("\n"); Check this out Bagaimana dengan fungsi search dan edit?

SOAL SLLNC (Guided) A. Buatlah sebuah struct album yang terdiri dari: title >> char(30) time [minutes] >> float *next >> album (disarankan untuk membuat struct & pointer berupa variable global, mengapa?) B. Siapkan sebuah function init() berikut ini: void init() { Apakah kegunaan function init() tersebut? Kapan function init() harus dipanggil? C. Buatlah Menu untuk program simulasi dengan struct album, yakni: 0. exit keluar dari program simulasi 1. cetak album >> cetak Album masih kosong jika tidak kosong >> cetak no + title + time 2. tambah lagu di awal album >> lagu baru menjadi lagu pertama jika tidak kosong >> lagu ditambahkan di bagian awal album 3. tambah lagu di akhir album >> lagu baru menjadi lagu pertama jika tidak kosong >> lagu ditambahkan di bagian akhir album 4. hapus lagu di awal album >> cetak Album masih kosong jika tidak kosong >> hapus lagu yang paling awal 5. hapus lagu di akhir album >> cetak Album masih kosong jika tidak kosong >> hapus lagu yang paling akhir (disarankan untuk membuat function untuk setiap menunya, mengapa?)

SOAL SLLNC (Unguided) D. Tambahkan beberapa menu di bawah ini: (no urut dimulai dari: 1 hingga ke n lagu) (petunjuk buatlah sebuah pointer bantu yang merujuk pada urutan tertentu) 6. edit lagu pada urutan tertentu user akan memasukkan no urut terlebih dahulu, setelah itu baru mengedit lagu jika no urut tidak tepat >> cetak no urut salah jika no urut tepat >> lakukan pengeditan title + time lagu 7. tambah lagu ke urutan tertentu misal: dalam album sudah tersusun 5 lagu no urut = -1 >> tambah lagu pada awal album no urut = -12 >> tambah lagu pada akhir album no urut = 3 >> tambah lagu pada urutan ke-3 dari album 8. hapus lagu pada urutan tertentu user akan memasukkan no urut terlebih dahulu, setelah itu data lagu terhapus jika no urut tidak tepat >> cetak no urut salah jika no urut tepat >> lakukan penghapusan lagu 9. copy lagu dari urutan tertentu misal: dalam album sudah tersusun 5 lagu jika no urut tidak tepat >> cetak no urut salah jika no urut tepat >> copy lagu tersebut ke bagian akhir album 10. hapus semua lagu, sehingga tidak ada satupun data lagu yang tersimpan SOAL SLLNC (Take Home) E. Tambahkan beberapa menu baru di bawah ini: 11. menampilkan daftar sorting (ascending) berdasarkan time dari lagu misal: sebuah album terdapat 5 lagu dengan time >> 4.50 2.00 3.25 1.30 4.75 proses1: 4.50 proses2: 2.00 4.50 proses3: 2.00 3.25 4.50 proses4: 1.30 2.00 3.25 4.50 proses5: 1.30 2.00 3.25 4.50 4.75 (petunjuk buatlah album baru yang terpisah dari album lama) (atau fungsi ini dipanggil saat penyusunan album dari awal) 12. menyimpan lagu lagu yang berada dalam range T1 < time < T2, selain itu lagu akan dihapus dari album user akan menginputkan time = T1 & T2 13. memutar lagu lagu dengan title berinisial X (huruf depan), selain itu lagu akan dihapus dari album user akan menginputkan inisial title = X 14. memutar lagu lagu dari bagian akhir album awal album, sehingga susunan lagu pada album tersebut berubah terbalik (petunjuk head2 = tail dan tail2 = head)