05. Double Linked List

dokumen-dokumen yang mirip
04. Single Linked List

ARNA FARIZA YULIANA SETIOWATI

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

Single Linked List (1)

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

BAB IV Antrian(Queue)

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

KONSEP POINTER DAN LINKED LIST

Algoritma dan Struktur Data. Pertemuan 9 Circular Linked List

A. TUJUAN PEMBELAJARAN

Algoritma Dan Struktur Data II. Queue

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

Algoritma dan Struktur Data. Pertemuan 7 Linked List

List Linear (Linked List) Farah Zakiyah Rahmanti 2014

KONSEP POINTER DAN LINKED LIST

LAPORAN PRAKTIKUM RESMI QUEUE

01. Review Array, Pointer dan Struktur

LIST. Dewi Sartika, M.Kom

ARNA FARIZA YULIANA SETIOWATI

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

BAB III QUEUE (ANTRIAN)

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

Praktikum Algoritma dan Struktur Data

MODUL 6 SINGLE & DOUBLE LINKED LIST

KONSEP POINTER DAN LINKED LIST

Algoritma dan Struktur Data

BAB II Senarai Berantai (Linked List)

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

QUEUE (ANTRIAN) Depan=1 Belakang=

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

STRUKTUR DATA (2) Single Linked List

STRUKTUR DATA POKOK BAHASAN - 8 QUEUE ( ANTRIAN)

Algoritma dan Struktur Data. Linked List

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

BAB VIII QUEUE (ANTRIAN)

*Sekumpulan elemen yang diatur secara terurut. *Linear List tidak sama dengan Connected-List

Review : Sifat Implementasi Linear List dengan Array

Algoritma dan Struktur Data. Pertemuan 8 Doubly Linked List

Struktur Data II. Single Linked List - Non circular

SINGLE LINKED LIST (NON CIRCULAR)

Array VS Linked List

Algoritma dan Struktur Data. Ramos Somya

Kode : IF2121 NIM :... Matakuliah : Algoritma dan Struktur Data Nama :... Hari, Tanggal : Senin, 13 November 2017 Waktu : 150 Menit

LINKED LIST. TUJUAN UMUM Memahami konsep linked list TUJUAN KHUSUS

Algoritma Dan Struktur Data II

STACK atau TUMPUKAN. Pertemuan 5 STACK (TUMPUKAN)

STRUKTUR DATA single linked list non circular

LINKED LIST. Double Linked List adalah :

LAPORAN PRAKTIKUM IX. Oleh:

Tugas Studi Kasus. Linked List SLLNC dengan Head & Tail

LOGO STRUKTUR DATA QUEUE

Algoritma Pemrograman & Struktur Data

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

REPRESENTASI FISIK LIST LINEAR

A. TUJUAN PEMBELAJARAN

BAB IX LINKED LIST (SENARAI BERANTAI)

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

ALGORITMA DAN STRUKTUR DATA

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

Algoritma dan Struktur Data. Queue

Algoritma dan Struktur Data. Ramos Somya

SENARAI BERANTAI (LINK LIST)

QUEUE (ANTREAN) Pertemuan 6 PENGERTIAN QUEUE (ANTREAN)

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA MODUL KE-2 STACK DAN QUEUE

Modul Praktikum Algoritma dan Struktur Data BAB 6 LINKED LIST

LIST BERKAIT(LINKED LIST)

A. TUJUAN PEMBELAJARAN

QUEUE (ANTRIAN) Struktur Data - Queue

STRUKTUR DATA Pertemuan 1 s.d 8

Pertemuan 7. REVIEW dan QUIS

Single Linked List (2)

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

KUM 5 IMPLEMENTASI QUEUE

DIG1G3 Implementasi Struktur Data

POINTER. Tim Alpro Teknik Informatika

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

Praktikum 5. Antrian (Queue)

Stack. Gambar 1.1 Stack

Pengenalan Struktur Data. Farah Zakiyah Rahmanti 2014

Double Linked List. Double Linked List

BAB IX LINKED LIST (SENARAI BERANTAI)

Lab. Teknik Informatika Struktur Data 1

TIM ASISTEN PRAKTIKUM ALGORITMA DAN PEMROGRAMAN 2017

Single Linked List. Single Linked List

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

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

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

Praktikum 2. Senarai Berantai (Linked List) POKOK BAHASAN: TUJUAN BELAJAR: DASAR TEORI:

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

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

TIF 4201 Algoritma Dan Struktur Data

Search And Insert Problem (Sorted Double Linkedlist Solution)

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

STRUKTUR DATA Pertemuan 1 s.d 8

ALGORITMA DAN STRUKTUR DATA ARRAY STACK DAN QUEUE

Tutorial - Single Linked List

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.

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

Transkripsi:

0. Double Linked List ARNA FARIZA YULIANA SETIOWATI Capaian Pembelajaran 1. Mahasiswa mengerti konsep double linked list dan operasi pada single linked list. 2. Mahasiswa dapat mengimplementasikan double linked list dalam bahasa pemrograman. 1

Materi Pengertian Double Linked List OperasipadaDouble Linked List : Mencetaksimpul MenyisipkanSimpul MenghapusSimpul Implementasi Queue dengan Double Linked List Double Linked List Elemen-elemen dihubungkan dengan dua pointer dalam satu elemen. List bisamelintasbaikkedepanmaupunkebelakang. Masing-masing elemen terdiri dari tiga bagian bagian data/informasi pointer next yang menunjuk ke elemen berikutnya pointer prev yang menunjuk ke elemen sebelumnya Untuk menunjukkan dari double linked list, pointer prev dari elemen pertamamenunjuknull. Untuk menunjukkan dari double linked list tersebut, pointer next dari elemen terakhir menunjuk NULL. 4 2

Double Linked List pointer prev a b c c pointer next data/informasi Deklarasi Simpul pada Double Linked List typedef struct simpul DNode; struct simpul { int data; DNode *next; DNode *prev; };

Variabel, dan adalah variabel pointer yang menunjuk ke awal list adalah variabel pointer yang menunjuk ke akhir list adalah variabel pointer yang menunjuk ke simpul DNode * = NULL; DNode * =NULL; DNode *; 7 Alokasi Simpul Baru =(DNode *) malloc (sizeof(dnode)); ->data=x; ->next=null; ->prev=null; Jika x=10, maka 10 8 4

Membentuk Simpul Awal dan menunjukawallist, karenahanyaadasatusimpul maka dan menunjuk. Head = = ; 10 9 Operasi pada Double Linked List 1. Mencetak Simpul 2. Menyisipkan Simpul. Menghapus Simpul

Operasi Mencetak Simpul Operasi mencetak simpul dapat dilakukan dengan cara o Mencetakdari ke 8 1 12 10 o Mencetakdari ke 10 12 1 8 8 1 12 10 Mencetak dari ke DNode *p = ; while (p!= NULL){ printf( %d, p->data); p = p->next; } printf( \n );

Mencetak dari ke DNode *p = ; while (p!= NULL){ printf( %d, p->data); p = p->prev; } printf( \n ); Operasi Menyisipkan Simpul Operasi menyisipkan simpul terdiri dari: o Sisipawallist o Sisipakhirlist o Sisip sebelum simpul tertentu o Sisip setelah simpul tertentu 14 7

Sisip Awal List Buat simpul : Linked list: 8 10 1 Sisip Awal List 1. ->next menunjuk simpul 8 10 1 8

Sisip Awal List 2. ->prev menunjuk 8 10 17 Sisip Awal List. menunjuk 8 10 18 9

Sisip Awal List ->next = ; ->prev = ; = ; Sisip Akhir List Buat simpul : Linked list: 8 10 20 10

Sisip Akhir List 1. ->prev menunjuk simpul 8 10 21 Sisip Akhir List 2. ->next menunjuk simpul 8 10 22 11

Sisip Akhir List. menunjuk 8 10 2 Sisip Akhir List ->prev = ; ->next = ; = ; 12

Sisip Setelah Simpul x (misal x=10) Buat simpul : Linked list: 8 10 2 Sisip Setelah Simpul x (misal x=10) 1. after diarahkan ke posisi simpul 10, after dapat dimulai dari atau 8 10 after 2 1

Sisip Setelah Simpul x (misal x=10) 2. ->prev menunjuk after 8 10 after 27 Sisip Setelah Simpul x (misal x=10). ->next menunjuk after->next 8 10 after 28 14

Sisip Setelah Simpul x (misal x=10) 4. after->next->prev menunjuk 8 10 after 29 Sisip Setelah Simpul x (misal x=10). after->next menunjuk 8 10 after 0 1

Sisip Setelah Simpul Tertentu DNode *after = ; while (after->data!= x) after = after->next; ->prev = after; ->next = after->next; after->next->prev = ; after->next = ; Sisip Setelah Simpul Tertentu DNode *after = ; while (after->data!= x) after = after->prev; ->prev = after; ->next = after->next; after->next->prev = ; after->next = ; 1

Sisip Sebelum Simpul x (misal x=) Buat simpul : Linked List: 8 10 Sisip Sebelum Simpul x (misal x=) 1. Before diarahkan menunjuk ke posisi simpul, before dapat dimulai dari atau 8 10 before 4 17

Sisip Sebelum Simpul x (misal x=) 2. ->prev menunjuk before->prev 8 10 before Sisip Sebelum Simpul x (misal x=). ->next menunjuk before 8 10 before 18

Sisip Sebelum Simpul x (misal x=) 4. before->prev->next menunjuk 8 10 before 7 Sisip Sebelum Simpul x (misal x=). before->prev menunjuk 8 10 before 8 19

Sisip Sebelum Simpul Tertentu DNode *before = ; while (before->data!= x) before = before->next; ->prev = before->prev; ->next = before; before->prev->next = ; before->prev = ; Sisip Sebelum Simpul Tertentu DNode *before = ; while (before->data!= x) before = before->prev; ->prev = before->prev; ->next = before; before->prev->next = ; before->prev = ; 20

Operasi Menghapus Simpul Operasi menghapus simpul terdiri dari: o Hapus simpul awal o Hapus simpul akhir o Hapus simpul tertentu 41 Fungsi free_dnode Sebelum menghapus simpul, buat fungsi untuk membebaskan alokasi memori dengan fungsi free void free_dnode(dnode *p) { free(p); p=null; } 42 21

Hapus Simpul Awal Linked List 8 10 4 Hapus Simpul Awal 1. hapus menunjuk 8 10 hapus 44 22

Hapus Simpul Awal 2. ->next-> prev menunjuk NULL 8 10 hapus 4 Hapus Simpul Awal. menunjuk hapus->next 8 10 hapus 4 2

Hapus Simpul Awal 4. free_dnode(hapus) 8 10 hapus 47 Hapus Simpul Awal Dnode hapus = ; ->next->prev = NULL; = hapus->next; free_dnode(hapus); 24

Hapus Simpul Akhir Linked List 10 49 Hapus Simpul Akhir 1. hapus menunjuk 10 hapus 0 2

Hapus Simpul Akhir 2. ->prev->next menunjuk 10 hapus 1 Hapus Simpul Akhir. menunjuk hapus->prev 10 hapus 2 2

Hapus Simpul Akhir 4. free_dnode(hapus) 10 hapus Hapus Simpul Akhir Dnode hapus = ; ->prev->next = NULL; = hapus->prev; free_dnode(hapus); 27

Hapus Simpul Tertentu (misal x=) Linked List 10 Hapus Simpul Tertentu (misal x=) 1. hapus menunjuk simpul x= 10 hapus 28

Hapus Simpul Tertentu (misal x=) 2. hapus->prev->next menunjuk hapus->next 10 hapus 7 Hapus Simpul Tertentu (misal x=). hapus->next->prev menunjuk hapus->prev 10 hapus 8 29

Hapus Simpul Tertentu (misal x=) 4. free_dnode(hapus) 10 hapus 9 Hapus Simpul Tertentu Dnode hapus = ; while (hapus->data!= x) hapus = hapus->next; hapus->prev->next = hapus->next; hapus->next->prev = hapus->prev; free_dnode(hapus); 0

Hapus Simpul Tertentu Dnode hapus = ; while (hapus->data!= x) hapus = hapus->prev; hapus->prev->next = hapus->next; hapus->next->prev = hapus->prev; free_dnode(hapus); ImplementasiQueue dengandouble Linked List Queue adalahpenyimpanandata dengankonsepfirst In First Out (FIFO) Terdapat dua penunjuk yaitu front dan rear Fungsi Enqueue menambah simpul pada posisi rear Fungsi Dequeue menghapus simpul pada posisi front 1

DeklarasiQueue dengandouble Linked List typedef struct simpul DNode; typedef int itemtype; struct simpul { itemtype item; DNode *next; DNode *prev; }; typedef struct { DNode *front; DNode *rear; int count; } Queue; Fungsi pada Queue Inisialisasi front dan rear menunjuk NULL, count=0 Kosong jikarear= NULL ataufront= NULL Enqueue buat simpul, sisip akhir list (posisi rear) Dequeue hapusawallist (posisifront) 2

Fungsi Inisialisasi void inisialisasi (Queue *q) { q->front = NULL; q->rear = NULL; q->count = 0; } Fungsi Kosong int Kosong (Queue *q) { return(q->rear==null) }

Fungsi Enqueue void Enqueue (Queue *q, itemtype x) { DNode * = (DNode *) malloc (sizeof(dnode)); if(==null) { printf( Alokasi gagal\n ); exit(1); } else { ->item = x; ->next = NULL; ->prev = q->rear; q->rear->next = ; q->rear = ; q->count++; } } Fungsi Dequeue itemtype Dequeue (Queue *q) { DNode *hapus; itemtype temp; if(kosong(q)) { printf( Queue kosong\n ); return ; } else { temp = q->front->item; hapus = q->front; q->front = hapus->next; q->front->prev = NULL; free(hapus); q->count-- return temp; } } 4

Rangkuman Simpul pada double linked list terdiri dari bagian data, pointer next dan pointer prev Operasi pada double linked list terdiri dari operasi cetak, sisip dan hapus Operasicetakdapatdilakukandari ke ataudari ke Operasi sisip terdiri dari sisip awal list, sisip akhir list, sisip setelah simpul tertentu, sisip sebelum simpul tertentu Operasi hapus terdiri dari hapus awal list, hapus akhir list dan hapus simpul tertentu Implementasi Queue dengan double linked list, pada operasi Enqueue dengan sisip akhir list dan pada operasi Dequeue dengan hapus awal list Latihan 1. Buatlah double linked list dengan data bertipe integer yang dapat melakukan operasi sisip secara terurut dan hapus simpul tertentu dengan ketentuan sebagai berikut: a) Operasisisip, buatsebuahsimpul, Jikadata simpul< data pada, makagunakansisip awallist Jika pencarian data simpul mencapai NULL (data belum ada), sisip akhir list Jikadata simpul= data padasimpultertentu makaberikanpesansimpulsudah ada(duplikat) Lainnya sisip sebelum simpul tertentu b) Operasi hapus, Jika posisi simpul yang dihapus pada, gunakan hapus awal list Jika posisi simpul yang dihapus pada, gunakan hapus akhir list Lainnya hapus simpul tengah

Latihan 2. ImplementasikanQueue dengandouble linked list, buatlahmenu Enqueue, Dequeue dan Tampil. Buatlah double linked list dengan simpul berupa data mahasiswa yang terdiri dari NRP, Nama dan Kelas. Buatlah operasi Sisip secaraterurut, Hapusdata mahasiswatertentudanupdate data (nama dan kelas saja) Project Implementasikan sebuah multiple list sistem akademik. Data terdiri dari mahasiswa dan nilai mahasiswa. Data mahasiswa terdiri dari NRP, Nama dan Prodi. Sedangkan data nilai terdiridarikodemk, NamaMK dannilai. Buatlahhubunganantaramahasiswadannilai, dimana satu mahasiswa mengambil beberapa mata kuliah. Fungsi yang dibuat terdiri dari: 1. Sisip mahasiswa secara terurut 2. Hapus mahasiswa. Update mahasiswa(nama dan Prodi) 4. Sisip MK per mahasiswa. Hapus MK per mahasiswa. Tampilkan data mahasiswa dan nilai rata-rata Deklarasi mahasiswa dan mata kuliah sebagai berikut:

typedef struct simpulmhs Mahasiswa; typedef struct simpulmk MataKuliah; struct simpulmhs { int NRP; char Nama[0]; char Prodi[1]; Mahasiswa *nextmhs; Mahasiswa *prevmhs; MataKuliah *next; }; struct simpulmk { char KodeMK[]; char NamaMK[1]; int Nilai; MataKuliah *nextmk; }; 7