PRAKTIKUM ALGORITMA DAN STRUKTUR DATA DOUBLE LINKED LIST CIRCULAR

dokumen-dokumen yang mirip
Praktikum Algoritma dan Struktur Data

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

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

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

Struktur Data II. Single Linked List - Non circular

MODUL 6 SINGLE & DOUBLE LINKED LIST

STRUKTUR DATA (2) Single Linked List

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

Tugas Studi Kasus. Linked List SLLNC dengan Head & Tail

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA

KONSEP POINTER DAN LINKED LIST

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

DIKTAT PRAKTIKUM ALGORITMA DAN STRUKTUR DATA

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

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

Algoritma dan Struktur Data

SINGLE LINKED LIST (NON CIRCULAR)

LAPORAN PRAKTIKUM IX. Oleh:

Algoritma Pemrograman & Struktur Data

MODUL PRAKTIKUM STRUKTUR DATA FAKULTAS ILMU KOMPUTER UNIVERSITAS ESA UNGGUL

# NINE Queue dengan Array

Algoritma dan Struktur Data. Ramos Somya

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

List Linear (Linked List) Farah Zakiyah Rahmanti 2014

Modul Praktikum Algoritma dan Struktur Data

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

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

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

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

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

A. TUJUAN PEMBELAJARAN

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

Linked List dan Implementasinya dalam Bahasa Java

Algoritma dan Struktur Data. Ramos Somya

BAB II Senarai Berantai (Linked List)

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

Seharusnya. if (antrian.tail==max-1) return 0;

Penambahan Simpul (Node)

05. Double Linked List

LINKED LIST. Double Linked List adalah :

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

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

STRUKTUR DATA. Literatur

LAPORAN PRAKTIKUM RESMI QUEUE

Algoritma dan Struktur Data. Pertemuan 9 Circular Linked List

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

Praktikum 5. Antrian (Queue)

LINKED LIST. TUJUAN UMUM Memahami konsep linked list TUJUAN KHUSUS

Algoritma dan Struktur Data. Linked List

Modul Praktikum Algoritma dan Struktur Data BAB 6 LINKED LIST

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

JURUSAN SISTEM INFORMASI SEKOLAH TINGGI ILMU KOMPUTER YOS SUDARSO PURWOKERTO 2014

ALGORITMA DAN STRUKTUR DATA

REPRESENTASI FISIK LIST LINEAR

SENARAI BERANTAI (LINK LIST)

TUGAS PENDAHULUAN MODUL 12 PENGENALAN DAN IMPLEMENTASI STRUKTUR DATA STACK

A. TUJUAN PEMBELAJARAN

Dinamik Linked List. hari bulan tahun

Binary Tree. Binary Tree dapat digambarkan berdasarkan kondisinya, sebagai berikut: Pointer ke akar (root) dari tree

A. TUJUAN PEMBELAJARAN

PERTEMUAN VI POINTER 6.1 Tujuan Praktikum 6.2 Teori Penunjang Pointer

Algoritma Dan Struktur Data II

04. Single Linked List

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

Search And Insert Problem (Sorted Double Linkedlist Solution)

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

PRAKTIKUM STRUKTUR DATA QUEUE. SULIDAR FITRI, M.Sc

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

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

STRUKTUR DATA POKOK BAHASAN - 8 QUEUE ( ANTRIAN)

Single Linked List (1)

Tutorial - Single Linked List

Struct Lanjutan: Studi Kasus

STACK DAN QUEUE (Muhammad Fachrie, STMIK Amikom Yogyakarta)

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

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

Pertemuan 7. REVIEW dan QUIS

Binary Search Tree (BST)

Algoritma dan Struktur Data. Pertemuan 5 Pointer

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

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

STACK atau TUMPUKAN. Pertemuan 5 STACK (TUMPUKAN)

LAPORAN PRAKTIKUM IV. Oleh:

POINTER STACK DAN QUEUE. Institut Teknologi Sumatera

Algoritma Pemrograman & Struktur Data

Linked List 6.3 & 7.3 NESTED LOOP

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

LIST. Dewi Sartika, M.Kom

BAB IV Antrian(Queue)

SORTING (Pengurutan)

BAB IX LINKED LIST (SENARAI BERANTAI)

ALGORITMA DAN STRUKTUR DATA POINTER DAN FUNCTION

Apakah Anda sering kesulitan untuk

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

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

Transkripsi:

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA DOUBLE LINKED LIST CIRCULAR TUJUAN 1. Mahasiswa memahami dan mengerti mengenai double linked list circular dalam C++ 2. Mahasiswa mampu membuat program dengan menggunakan double linked list circular dalam pemrograman C++ DASAR TEORI Double Linked List Circular adalah linked list dengan menggunakan pointer, dimana setiap node memiliki 3 field, yaitu 1 field pointer yang menunjuk pointer berikutnya ( next), 1 field menunjuk pointer sebelumnya ( prev), serta sebuah field yang berisi data untuk node tersebut. Ilustrasi dari linked list ini dapat dilihat pada gambar berikut ini : Setiap node pada linked list mempunyai field yang berisi data dan pointer ke node berikutnya & ke node sebelumnya. Untuk pembentukan node baru, mulanya pointer next dan prev akan menunjuk ke dirinya sendiri. Jika sudah lebih dari satu node, maka pointer prev akan menunjuk ke node sebelumnya, dan pointer next akan menunjuk ke node sesudahnya. Pada dasarnya struktur data dan operasi pada double linked list circular mirip dengan double linked list non circular. Hanya pada double linked list circular, maka node terakhir selalu menunjuk ke node terdepan. Pointer ini nantinya akan diubah dan diperbaharui isi dan posisinya sesuai dengan operasi yang dilakukan terhadap list-nya. Operasi-operasinya meliputi penambahan data baru, penghapusan data, dan penampilan isi list-nya. Sama seperti pada single linked list, maka double linked list juga dapat disusun menggunakan head dan tail. Pointer-pointer ini nantinya juga harus diperbaharui jika terjadi operasi-operasi pada list-nya. 1

PROSEDUR PERCOBAAN Kompile program berikut ini dan amati outputnya pada layar Anda. Perhatikan baik-baik pemanggilan dan penggunaan fungsi-fungsi serta prosedurnya agar dapat mengerjakan tugas yang diberikan. /* dllc */ //lib #include <stdio.h> #include <conio.h> //global var/const typedef struct TNode int data; TNode *next, *prev; ; TNode *head; //head node //proto func/proc void inithead(); int isempty(); void insertdepan(int databaru); void insertbelakang (int databaru); void tampillist(); void hapusdepan(); void hapusbelakang(); void clearlist(); //detil func/proc //init head void inithead() head = NULL; //NULL <> null!!! //cek list kosong atau tdk int isempty() return (head == NULL)? 1:0; //tambah data di depan void insertdepan(int databaru) 2

TNode *baru, *bantu; baru = new TNode; baru->data = databaru; baru->next = baru; baru->prev = baru; if(isempty()==1) head=baru; head->next = head; head->prev = head; bantu = head->prev; baru->next = head; head->prev = baru; head = baru; head->prev = bantu; bantu->next = head; printf("data baru telah dimasukkan di depan\n"); //tambah data di belakang void insertbelakang (int databaru) TNode *baru,*bantu; baru = new TNode; baru->data = databaru; baru->next = baru; baru->prev = baru; if(isempty()==1) head=baru; head->next = head; head->prev = head; bantu=head->prev; bantu->next = baru; baru->prev = bantu; baru->next = head; head->prev = baru; printf("data baru telah dimasukkan di belakang\n"); 3

//menampilkan list void tampillist() TNode *bantu; bantu = head; if(isempty()==0) do printf("%d\t",bantu->data); bantu=bantu->next; while(bantu!=head); printf("\n"); printf("masih kosong\n"); //hapus data terdepan void hapusdepan() TNode *hapus,*bantu; int d; if (isempty()==0) if(head->next!= head) hapus = head; d = hapus->data; bantu = head->prev; head = head->next; bantu->next = head; head->prev = bantu; delete hapus; d = head->data; head = NULL; printf("%d terhapus\n",d); printf("masih kosong\n"); 4

//hapus data terakhir void hapusbelakang() TNode *hapus,*bantu; int d; if (isempty()==0) if(head->next!= head) bantu = head; while(bantu->next->next!= head) bantu = bantu->next; hapus = bantu->next; d = hapus->data; bantu->next = head; delete hapus; d = head->data; head = NULL; printf("%d terhapus\n",d); printf("masih kosong\n"); //clear semua node void clearlist() TNode *bantu,*hapus; if (isempty()==0) bantu = head; while(bantu->next!=head) hapus = bantu; bantu = bantu->next; delete hapus; head = NULL; //main prog 5

int main() printf("double linked list non circular\n1. inisialisasi head... \t"); inithead(); printf("done\ntampilkan isi list :\n"); //entry data di depan printf("\nentri data di depan list\n"); int data_baru; for(int i=1;i<=5;i++) printf("masukkan data ke-%d : ",i); scanf("%d",&data_baru); insertdepan(data_baru); //entry data di belakang printf("\nentri data di belakang list\n"); for(int i=1;i<=5;i++) printf("masukkan data ke-%d : ",i); scanf("%d",&data_baru); insertbelakang(data_baru); //hapus data di depan printf("\nhapus 2 data terdepan\n"); for(int i=1;i<=2;i++) hapusdepan(); //hapus data di belakang printf("\nhapus 2 data terakhir\n"); for(int i=1;i<=2;i++) hapusbelakang(); tampillist(); 6

//clear smua list printf("\nhapus semua node\n"); clearlist(); tampillist(); getch(); return 0; TUGAS Buatlah program menggunakan double linked list circular untuk menyimpan dan menampilkan data berikut dari data ke-3 dengan urutan terbalik : 1. Janu 2. Dadu 3. Ayu 4. Kiki 5. Budi 7