Dinamik Linked List. hari bulan tahun

dokumen-dokumen yang mirip
Penambahan Simpul (Node)

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

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

Binary Search Tree (BST)

SINGLE LINKED LIST (NON CIRCULAR)

KONSEP POINTER DAN LINKED LIST

Pencarian (Searching)

A. TUJUAN PEMBELAJARAN

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

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

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

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

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

BAB IX LINKED LIST (SENARAI BERANTAI)

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

Struktur Data II. Single Linked List - Non circular

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

Algoritma dan Struktur Data. Ramos Somya

Algoritma Pemrograman & Struktur Data

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

Tugas Studi Kasus. Linked List SLLNC dengan Head & Tail

Typedef dan Struct. Pendahuluan. Objektif. Bahan Bacaan

Minggu ke-14 Typedef, Struct & Command Line Argument

Praktikum 7. Pengurutan (Sorting) Insertion Sort, Selection Sort POKOK BAHASAN: TUJUAN BELAJAR: DASAR TEORI:

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

Struct dan Fungsi. Pendahuluan. Objektif. Bahan Bacaan

STRUKTUR DATA single linked list non circular

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

Array VS Linked List

04. Single Linked List

SENARAI BERANTAI (LINK LIST)

Praktikum Algoritma dan Struktur Data

MODUL 6 SINGLE & DOUBLE LINKED LIST

STRUKTUR DATA (2) Single Linked List

Single Linked List (1)

ALGORITMA DAN STRUKTUR DATA

PERTEMUAN VI POINTER 6.1 Tujuan Praktikum 6.2 Teori Penunjang Pointer

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA DOUBLE LINKED LIST CIRCULAR

Review : Sifat Implementasi Linear List dengan Array

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

TUGAS PENDAHULUAN MODUL 12 PENGENALAN DAN IMPLEMENTASI STRUKTUR DATA STACK

01. Review Array, Pointer dan Struktur

Pendahuluan Pemrograman Mikrokontroler

Struct Lanjutan: Studi Kasus

LAPORAN PRAKTIKUM RESMI QUEUE

Array (Single Dimension)

Algoritma dan Struktur Data. Linked List

LAPORAN PRAKTIKUM IX. Oleh:

Linked List 6.3 & 7.3 NESTED LOOP

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

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

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

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

Array (Single Dimension)

A. TUJUAN PEMBELAJARAN

Langkah Mudah Belajar Struktur Data Menggunakan C/C++

Modul Praktikum Algoritma dan Struktur Data BAB 6 LINKED LIST

Minggu ke-11 Fungsi (Function)

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

Fungsi (Function) Pendahuluan. Objektif. Bahan Bacaan

BAB IX LINKED LIST (SENARAI BERANTAI)

Praktikum 9. Pengurutan (Sorting) Quick Sort, Merge Sort

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

ALGORITMA DAN STRUKTUR DATA POINTER DAN FUNCTION

1. Mempelajari konsep dasar array, array ganda, pengiriman array ke fungsi dan string 2. Membuat program menggunakan array, array ganda

Apakah Anda sering kesulitan untuk

Algoritme dan Pemrograman

Algoritme dan Pemrograman

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

MODUL PRAKTIKUM STRUKTUR DATA

Search And Insert Problem (Sorted Double Linkedlist Solution)

Tutorial - Single Linked List

Pemrograman Dasar C. Minggu 9

Praktikum 5. Antrian (Queue)

I.1. MEMBUAT PROGRAM C DENGAN VISUAL C

DIG1G3 Implementasi Struktur Data

SORTING (Pengurutan)

BAB IV Antrian(Queue)

Algoritma dan Struktur Data. Pertemuan 9 Circular Linked List

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

BAB II Senarai Berantai (Linked List)

Minggu ke-10 Pointer. Pendahuluan. Objektif. Bahan Bacaan

Algoritma dan Struktur Data

DISUSUN OLEH BAB IX. Structt. //untuk. long. int nip; char. nama[31]; char } HAL 1

05. Double Linked List

Bahasa C melengkapi fasilitas modular dengan menggunakan fungsi pada setiap SubProgram. Contoh pembagian program menjadi beberapa subprogram.

A. TUJUAN PEMBELAJARAN

REPRESENTASI FISIK LIST LINEAR

LATIHAN DAN KISI-KISI SOAL JURUSAN TELEKOMUNIKASI POLITEKNIK ELEKTRONIKA NEGERI SURABAYA

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA

Algoritma Pemrograman & Struktur Data

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

Praktikum 8. Pengurutan (Sorting) Bubble Sort, Shell Sort

Pertemuan 7. REVIEW dan QUIS

Tipe Data dan Operator

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET BAHASA PEMROGRAMAN Fungsi : Passing Parameter by Value & Semester 3

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA

LIST. Dewi Sartika, M.Kom

Transkripsi:

Dinamik Linked List Pendahuluan Pada pertemuan ini, kita akan membahas struktur data Linked List (senarai berantai) yang berbeda dengan struktur data array. Tetapi sebelum itu, akan direview sedikit mengenai penggunaan struct serta typedef dalam C sehingga saat membahas Linked List serta pemrogramannya tidak mengalami kesulitan. Tujuan dari materi ini adalah mengajarkan struktur data Linked List dan bagaimana membentuknya. Selain itu, proses penyisipan, penghapusan dan pencarian simpul (node) dalam struktur data ini juga akan dibahas secara detail. Struct Struct atau structure dalam C digunakan untuk membentuk tipe data dengan anggota (member) dengan tipe data tertentu. Berikut cara deklarasi dari sebuah struct: struct tgl { int hari; int bulan; int tahun; struct tgl Tanggal; Bila divisualisasikan kira-kira sebagai berikut: Tanggal = hari bulan tahun struct tgl Contoh di atas memperlihatkan bagaimana mendeklarasi sebuah struct dengan nama struct tgl yang memiliki tiga member bertipe int yaitu hari, bulan dan tahun. Kemudian sebuah variabel Tanggal dibuat bertipe struct tgl. Untuk mempersingkat dan menyederhanakan pendeklarasian sebuah struct, kata cadang typedef dapat digunakan. Sesuai namanya, typedef digunakan untuk mendefinisikan sebuah tipe data menjadi suatu alias tertentu. Perhatikan contoh berikut: Kata cadang typedef Type data typedef int Integer; Integer i,j,k; alias Dengan cara yang sama, pendeklarasian struct tgl di atas dapat disederhanakan menggunakan kata cadang typedef. Perhatikan statemen berikut ini: Struktur Data 1

typedef struct tgl { int hari; int bulan; int tahun; Date; Date tanggal; Single Linked List (Senarai Berantai Tunggal) Linked list dapat dianalogikan sebagai rantai besi yang terdiri dari beberapa besi bulatan yang saling terhubung. Dengan mengingat atau memegang bulatan besi yang terdepan, maka bulatan-bulatan besi yang saling terkait lainnya dapat kita jajaki. Berikut ilustrasi dari sebuah linked list. head 5 15 Dengan hanya mencatat atau memegang alamat dari alokasi data bertipe struct root pada sebuah variabel LL maka keberadaan simpul-simpul dalam linked list tersebut dapat dijaga. Bila data-data dalam node berupa bilangan bulat maka deklarasi struct yang diperlukan untuk membentuk linked list di atas adalah: typedef struct node * NodePtr; typedef struct node { int data; NodePtr next; Node; typedef struct root { NodePtr head; unsigned size; Root; Root LL; Penambahan Simpul Pada Single Linked List Bila disepakati bahwa setiap penambahan simpul pada linked list dilakukan pada bagian depan (paling dekat dengan head) maka jumlah biaya (complexitas) untuk penambahan simpul adalah konstan atau O(1). Sebagai contoh, penambahan sebuah simpul dengan nilai 3 pada linked list di atas dapat divisualisasikan sebagai berikut: head 5 15 Buat simpul baru dan masukkan datanya 3 Kemudian, atur kembali susunan linked list menjadi: Struktur Data 2

head 5 15 Atau: 3 Pencarian Simpul Pada Single Linked List Pencarian simpul dalam sebuah single linked list harus dilakukan secara linier atau O(n). Hal ini disebabkan karena simpul-simpul dalam linked list biasanya disusun secara tidak berurut. Dan seandainya pun simpul-simpul dalam linked list disusun secara berurut, metode pencarian biner (binary search) tetap tidak dapat dipergunakan. Ada 2 alasan mengapa pencarian biner tidak dapat digunakan: 1. Linked list tidak memiliki indeks, sehingga akses langsung ke simpul tertentu tidak dapat dilakukan. Untuk menuju ke simpul tertentu, proses pemeriksaan tetap dimulai dari simpul head (sisi depan linked list). Oleh karena itu proses pencarian selalu berjalan secara linier. 2. Tidak dapat membagi linked list menjadi 2 bagian yang sama besar seperti membagi array menjadi 2 bagian yang sama pada saat metode pencarian biner diaplikasikan pada array terurut. Penghapusan Simpul Pada Single Linked List Sebelum proses penghapusan dilakukan, proses pencarian simpul yang ingin dihapus harus terlebih dahulu dilakukan. Bila simpul yang ingin dihapus ditemukan, suatu hal yang selalu harus diperhatikan adalah bagaimana mengeluarkan sebuah simpul dalam linked list kemudian menyambung linked list tersebut kembali. Jumlah biaya yang diperlukan untuk menghapus sebuah simpul dalam single linked list adalah O(n). Bila diketahui sebuah linked list tersusun dalam susunan seperti pada gambar berikut ini: Bila simpul dengan nilai 15 dihapus maka susunan linked list menjadi: Struktur Data 3

/* Program berikut disimpan dalam file linkedlist.h */ typedef struct node * NodePtr; typedef struct node { int data; NodePtr next; Node; typedef struct list { NodePtr head; unsigned size; List; void initlist(list *); int addlist(list *, int); void displaylist(list *); void freelist(list *); Prototype function ditulis disini /* Program berikut disimpan dalam file linkedlist.c */ #include "linkedlist.h" #include <stdlib.h> #include <stdio.h> void initlist(list * lptr) { lptr->head = ; lptr->size = 0; int addlist(list * lptr, int data) { NodePtr new; new = malloc(sizeof(node)); if(new == ) { printf("error dalam membuat alokasi memori\n"); return 0; new->data = data; new->next = lptr->head; lptr->head = new; lptr->size++; return 1; void displaylist(list * lptr) { NodePtr current = lptr->head; printf("\n"); while(current!= ) { printf("%d -> ", current->data); current = current->next; printf("null\n"); void freelist(list * lptr) { NodePtr next=lptr->head; NodePtr current=next; Struktur Data 4

while(current!= ) { next = current->next; free(current); current = next; /* Program berikut disimpan dalam file main.c */ #include <stdlib.h> #include <stdio.h> #include "linkedlist.h" int main(void) { int i, n, data; List LL; initlist(&ll); /* Buat initial linked list */ printf("jumlah simpul = "); scanf("%d", &n); /* Input data simpul */ for(i=0; i<n; i++) { printf("data = "); scanf("%d", &data); addlist(&ll, data); displaylist(&ll); freelist(&ll); return EXIT_SUCCESS; Kompile program di atas dengan menulis perintah berikut pada C prompt: gcc Wall pedantic g o mylist main.c linkedlist.c Hasil kompilasi di atas akan membuat sebuah file mylist (dibangkitkan dari dua buah file yaitu: main.c dan linkedlist.c). Selanjutnya, file mylist tersebut dapat dijalankan langsung melalui prompt dengan perintah: mylist Struktur Data 5