LINKED LIST. Double Linked List adalah :

dokumen-dokumen yang mirip
04. Single Linked List

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

05. Double Linked List

List Linear (Linked List) Farah Zakiyah Rahmanti 2014

STRUKTUR DATA single linked list non circular

Praktikum Algoritma dan Struktur Data

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

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA DOUBLE LINKED LIST CIRCULAR

Struktur Data II. Single Linked List - Non circular

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

KONSEP POINTER DAN LINKED LIST

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

A. TUJUAN PEMBELAJARAN

Array VS Linked List

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

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

STRUKTUR DATA (2) Single Linked List

KONSEP POINTER DAN LINKED LIST

BAB II Senarai Berantai (Linked List)

Algoritma dan Struktur Data. Ramos Somya

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

Tugas Studi Kasus. Linked List SLLNC dengan Head & Tail

MODUL 6 SINGLE & DOUBLE LINKED LIST

REPRESENTASI FISIK LIST LINEAR

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

Algoritma dan Struktur Data

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

SINGLE LINKED LIST (NON CIRCULAR)

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

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

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

Algoritma dan Struktur Data. Linked List

Review : Sifat Implementasi Linear List dengan Array

Tutorial - Single Linked List

Algoritma Pemrograman & Struktur Data

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

Algoritma dan Struktur Data. Pertemuan 9 Circular Linked List

BAB IX LINKED LIST (SENARAI BERANTAI)

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

A. TUJUAN PEMBELAJARAN

Algoritma dan Struktur Data. Pertemuan 7 Linked List

LIST. Dewi Sartika, M.Kom

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA

SENARAI BERANTAI (LINK LIST)

A. TUJUAN PEMBELAJARAN

BAB IV Antrian(Queue)

Modul Praktikum Algoritma dan Struktur Data BAB 6 LINKED LIST

Single Linked List (1)

Linked List 6.3 & 7.3 NESTED LOOP

LAPORAN PRAKTIKUM IX. Oleh:

LINKED LIST. TUJUAN UMUM Memahami konsep linked list TUJUAN KHUSUS

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

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

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

Modul Praktikum Algoritma dan Struktur Data

STRUKTUR DATA Pertemuan 1 s.d 8

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

Algoritma dan Struktur Data. Pertemuan 8 Doubly Linked List

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

ALGORITMA DAN STRUKTUR DATA

BAB VI LINKED LIST. Struktur data dinamis sederhana dapat dibagi menjadi empat jenis, yaitu : 1. Linked list 2. Stack 3. Queue 4.

Pengenalan Struktur Data. Farah Zakiyah Rahmanti 2014

Penambahan Simpul (Node)

Struct Lanjutan: Studi Kasus

STRUKTUR DATA Pertemuan 1 s.d 8

Implementasi Struktur Data Stack (Tumpukan) dalam Tower of Hanoi Game

ASD. Alokasi Memori Dinamis

STACK DAN QUEUE (Muhammad Fachrie, STMIK Amikom Yogyakarta)

DIKTAT PRAKTIKUM ALGORITMA DAN STRUKTUR DATA

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

A. TUJUAN PEMBELAJARAN

MODUL PEMROGRAMAN 2. Queue (Antrian)

Apakah Anda sering kesulitan untuk

Ujian Tengah Semester Struktur Data dan Algoritma Fakultas Ilmu Komputer, Universitas Indonesia 9 November 2006

TUGAS PENDAHULUAN MODUL 12 PENGENALAN DAN IMPLEMENTASI STRUKTUR DATA STACK

Praktikum 5. Antrian (Queue)

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

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

LIST BERKAIT(LINKED LIST)

Pointer dan Array Dinamik. IF2121 / Algoritma dan Struktur Data Sem /2018

Algoritma dan Struktur Data. Ramos Somya

BAB IX LINKED LIST (SENARAI BERANTAI)

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

MODUL VI ARRAY 2-DIMENSI, POINTER DAN STRUKTUR

STRUKTUR DATA. Literatur

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

Algoritma dan Struktur Data. Pertemuan 6 Alokasi Memori Dinamis

01. Review Array, Pointer dan Struktur

Konsep Pemrograman. Bab 14. Struktur 1. Konsep Pemrograman Politeknik Elektronika Negeri Surabaya 2006 PENS-ITS. Umi Sa adah

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

ARNA FARIZA YULIANA SETIOWATI

# NINE Queue dengan Array

BAB III. Stack. ( Tumpukan )

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

SORTING (Pengurutan)

MODUL PRAKTIKUM STRUKTUR DATA FAKULTAS ILMU KOMPUTER UNIVERSITAS ESA UNGGUL

Dinamik Linked List. hari bulan tahun

Transkripsi:

LINKED LIST LINKED LIST merupakan operasi yang menggabungkan operasi pada stack dan queue yaitu FIFO dan LIFO.Membuat Program SINGLE LINKED LIST dengan statement untuk fungsi sisip sebelum simpul, sisip setelah simpul dan hapus tengah dengan ketentuan sebagai berikut : Untuk fungsi sisip sebelum simpul, jika data harus disisip di awal list maka akan mengubah posisi head. Demikian juga jika simpul tertentu yang dimaksud tidak ada maka ada pesan simpul baru tidak dapat disisipkan. Selain kondisi tersebut, lakukan sisip di tengah. Untuk fungsi sisip setelah simpul, jika simpul tertentu yang dimaksud tidak ada maka ada pesan simpul baru tidak dapat disisipkan. Selain kondisi tersebut, lakukan sisip di tengah. Untuk fungsi hapus tengah, apabila yang dihapus posisi awal list maka akan mengubah posisi head. Demikian juga jika data yang akan dihapus tidak ada maka ada pesan simpul tidak ada. Selain kondisi tersebut, lakukan hapus simpul tengah. Double Linked List adalah : Sebuah struktur data yang memiliki 2 pointer penunjuk, sehingga bisa saling terhubung antara elemen satu dengan elemen lainnya. dengan menggunakan struktur data seperti berikut : data pointer penunjuk elemen setelahnya (next) pointer penunjuk elemen sebelumnya (prev) Linked List biasa disebut simpul atau node. Siti yuliyanti Page 1

dalam program ini diperlukan beberapa library yaitu : #include<stdio.h> #include<stdlib.h> untuk merepresentasikannya bisa seperti ini typedef struct simpul node; struct simpul int data; node *prev; node *next; ; lalu membuat variabel global untuk head, tail, dan baru node *head = NULL, *tail = NULL, *baru; lalu buat fungsi untuk alokasi memori, dan disini diperlukan stdlib.h void allocate_node (int x) baru = (node *) malloc (sizeof(node)); if(baru==null) printf("alokasi Gagal\n"); exit(1); baru->data=x; baru->next=null; baru->prev=null; setelah simpul baru dialokasikan, maka simpul baru bisa dibuat : head = tail = baru; ada beberapa fungsi yang diperlukan untuk menambahkan (menyisipkan) simpul baru, yaitu : sisip awal sisip akhir sisip sebelum sisip sesudah dan untuk menghapus simpul, diperlukan beberapa fungsi, yaitu : hapus awal hapus akhir Siti yuliyanti Page 2

hapus simpul Untuk menyisipkan fungsi-fungsinya adalah : fungsi buat list void buat_list() printf("data Masih Kosong, List akan dibuat dengan data tersebut\n"); system("pause"); head = tail = baru; fungsi sisip awal void sisip_awal() if(head==null && tail==null) buat_list(); baru->next=head; head->prev=baru; head=baru; fungsi sisip akhir void sisip_akhir() if(head==null && tail==null) buat_list(); baru->prev=tail; tail->next=baru; tail=baru; fungsi sisip sebelum void sisip_sebelum(int s) node *before=head; int cek=0; if(before->next==null) cek=1; while(before->next->data!=s) Siti yuliyanti Page 3

before=before->next; if(before->next==null) cek = 1; if(cek==0) baru->prev = before; baru->next = before->next; before->next->prev = baru; before->next = baru; gatot(); fungsi sisip sesudah void sisip_sesudah(int s) node *after=tail; int cek=0; if(after->prev == NULL) cek=1; while(after->prev->data!=s) after=after->prev; if(after->prev==null) cek = 1; if(cek==0) baru->next = after; baru->prev = after->next; after->prev->next = baru; after->prev = baru; gatot(); Lalu untuk menghapus diperlukan beberapa fungsi, yaitu : hapus simpul Siti yuliyanti Page 4

void free_node(node *p) free(p); p=null; printf("data TERHAPUS\n"); hapus satu void hapus_satu() node *hapus = head; head = NULL; tail = NULL; free_node(hapus); hapus awal void hapus_awal() node *hapus = head; head->next->prev = NULL; head = head->next; free_node(hapus); hapus akhir void hapus_akhir() node *hapus = tail; tail->prev->next = NULL; tail = tail->prev; free_node(hapus); hapus simpul tertentu void hapus_tengah(int s) node *hapus=head; int cek=0; while(hapus->data!=s) if(hapus->next==null) cek=1; hapus = hapus->next; if(cek==0) Siti yuliyanti Page 5

hapus->prev->next = hapus->next; hapus->next->prev = hapus->prev; free_node(hapus); gadel(); untuk menampilkan pesan diperlukan fungsi tambahan : void gatot() printf("simpul BARU TIDAK DAPAT DISISIPKAN\n"); system("pause"); void gadel() printf("tidak ADA DATA YANG DIHAPUS\n"); system("pause"); Dan juga untuk menampilkan data yang berada pada list bisa di representasikan seperti ini : void tampil() node *p= head; printf("\ndata Simpul ==> "); while(p!=null) printf("%d ", p->data); p=p->next; printf("\n\n"); Dan pada main bisa menggunakan code seperti ini : void main() head=baru; int pilih, data, s; char lagi='y'; while(lagi=='y') system("cls"); awal(); tampil(); printf("menu Pilihan : \n"); printf("1. Sisip Awal\n"); printf("2. Sisip Akhir\n"); printf("3. Sisip Sebelum Simpul\n"); printf("4. Sisip Sesudah Simpul\n"); printf("5. Hapus Awal\n"); Siti yuliyanti Page 6

printf("6. Hapus Akhir\n"); printf("7. Hapus Tengah\n"); printf("\npilih No : "); scanf("%d", &pilih); switch(pilih) case 1 : printf("masukkan data : "); allocate_node(data); sisip_awal(); case 2 : printf("masukkan data : "); allocate_node(data); sisip_akhir(); case 3 : printf("masukkan data : "); allocate_node(data); if(head==null && tail==null) buat_list(); printf("dimasukkan sebelum : "); scanf("%d",&s); if(s==head->data) sisip_awal(); sisip_sebelum(s); case 4 : printf("masukkan data : "); allocate_node(data); if(head==null && tail==null) buat_list(); printf("dimasukkan sesudah : "); scanf("%d",&s); if(s==tail->data) sisip_akhir(); sisip_sesudah(s); case 5 : if(head == NULL && tail == NULL) gadel(); if(head == tail) hapus_satu(); Siti yuliyanti Page 7

hapus_awal(); case 6 : if(head == NULL && tail == NULL) gadel(); if(head == tail) hapus_satu(); hapus_akhir(); case 7 : printf("data yang dihapus : "); if(head == NULL && tail == NULL) gadel(); if(data == head->data && data == tail->data && head == tail) hapus_satu(); if(data == head->data) hapus_awal(); if(data == tail->data) hapus_akhir(); hapus_tengah(data); fflush(stdin); printf("lagi (y/t)? "); scanf("%c", &lagi); system( PAUSE ) digunakan untuk menghentikan program sejenak. system( CLS ) digunakan untuk menghapus layar. kedua command tersebut membutuhkan <stdlib.h> sama hal nya dengan penggunaan alokasi memori yang menggunakan malloc(), sizeof(), dan free(). Siti yuliyanti Page 8