Penambahan Simpul (Node)



dokumen-dokumen yang mirip
Dinamik Linked List. hari bulan tahun

Binary Search Tree (BST)

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

Pencarian (Searching)

A. TUJUAN PEMBELAJARAN

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

Array (Single Dimension)

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

Algoritma Pemrograman & Struktur Data

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

Array (Single Dimension)

Minggu ke-11 Fungsi (Function)

SINGLE LINKED LIST (NON CIRCULAR)

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

Algoritma dan Struktur Data. Ramos Somya

KONSEP POINTER DAN LINKED LIST

Fungsi (Function) Pendahuluan. Objektif. Bahan Bacaan

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

Struct dan Fungsi. Pendahuluan. Objektif. Bahan Bacaan

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

KONSEP POINTER DAN LINKED LIST

Struktur Data II. Single Linked List - Non circular

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

Pointer. Objektif. Bahan Bacaan

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

Minggu ke-14 Typedef, Struct & Command Line Argument

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

Praktikum Algoritma dan Struktur Data

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA DOUBLE LINKED LIST CIRCULAR

Array VS Linked List

PERTEMUAN VI POINTER 6.1 Tujuan Praktikum 6.2 Teori Penunjang Pointer

Tugas Studi Kasus. Linked List SLLNC dengan Head & Tail

TUGAS PENDAHULUAN MODUL 12 PENGENALAN DAN IMPLEMENTASI STRUKTUR DATA STACK

Struct Lanjutan: Studi Kasus

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

ALGORITMA DAN STRUKTUR DATA

Algoritma dan Struktur Data. Linked List

Pernyataan (Statement) dan Input/Output

REPRESENTASI FISIK LIST LINEAR

Pendahuluan Pemrograman Mikrokontroler

Minggu ke-13 Berkas (File)

SENARAI BERANTAI (LINK LIST)

STRUKTUR DATA single linked list non circular

STRUKTUR DATA (2) Single Linked List

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

Pernyataan (Statement)

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

LAPORAN PRAKTIKUM RESMI QUEUE

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

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

DIG1G3 Implementasi Struktur Data

Praktikum 5. Antrian (Queue)

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

A. TUJUAN PEMBELAJARAN

Typedef dan Struct. Pendahuluan. Objektif. Bahan Bacaan

BAB IV Antrian(Queue)

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

Algoritma dan Struktur Data. Pertemuan 9 Circular Linked List

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

Apakah Anda sering kesulitan untuk

Algoritma dan Struktur Data

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

A. TUJUAN PEMBELAJARAN

04. Single Linked List

MODUL PRAKTIKUM STRUKTUR DATA

MODUL 6 SINGLE & DOUBLE LINKED LIST

LIST. Dewi Sartika, M.Kom

File. Dalam bahasa pemrograman C, terdapat dua jenis stream: teks (ASCII) dan binari. Minggu ini, FILE dan stream jenis teks akan dibahas.

Single Linked List (1)

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA

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

Algoritma dan Struktur Data. Pertemuan 7 Linked List

Praktikum Algoritma dan Struktur Data 2010

LAPORAN PRAKTIKUM IX. Oleh:

Linked List 6.3 & 7.3 NESTED LOOP

Bab 9 Pointer. 9.1 Pendeklarasian pointer

Modul 15 Searching. 1.1 Kompetensi

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

Algoritme dan Pemrograman

Algoritma Pemrograman & 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

Algoritme dan Pemrograman

SORTING (Pengurutan)

Search And Insert Problem (Sorted Double Linkedlist Solution)

2. Mahasiswa dapat membuat dan menggunakan array dan linked list dalam suatu kasus.

Tutorial - Single Linked List

Tipe Data. Pendahuluan. Objektif. Bahan Bacaan

Review : Sifat Implementasi Linear List dengan Array

LIST BERKAIT(LINKED LIST)

Algoritma dan Struktur Data. Pertemuan 8 Doubly Linked List

LINKED LIST. TUJUAN UMUM Memahami konsep linked list TUJUAN KHUSUS

STACK atau TUMPUKAN. Pertemuan 5 STACK (TUMPUKAN)

MODUL PRAKTIKUM STRUKTUR DATA

void tukar_xy(struct koordinat *pos_xy){ int z; z = (*pos_xy).x; (*pos_xy).x = (*pos_xy).y; (*pos_xy).y = z;

BAB 3 SEARCHING A. TUJUAN

List Linear (Linked List) Farah Zakiyah Rahmanti 2014

Transkripsi:

Universitas Syiah Kuala MMA-041 Struktur Data Dynamic Linked List Dr. Taufik Fuadi Abidin, M.Tech taufik.abidin@unsyiah.ac.id

Single Linked List 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 ditelusuri. Berikut adalah ilustrasi dari sebuah single linked list. head 5 15 6 NULL 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 (Node) 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: Struktur Data 2

head 5 15 6 NULL Buat simpul baru dan masukkan datanya 3 Kemudian, atur kembali susunan linked list menjadi: head 5 15 6 NULL 3 Atau: head 3 5 15 6 NULL Pencarian Simpul Pencarian simpul dalam sebuah single linked list harus dilakukan secara linier. Kompleksitas pencarian sebuah simpul dalam linked list adalah O(n). Hal ini disebabkan karena simpul-simpul dalam linked list biasanya dikait secara tidak berurut. Seandainya pun linked list disusun secara terurut, metode pencarian biner (binary search) tetap tidak dapat diaplikasikan karena: 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). 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 yang terurut. Struktur Data 3

Penghapusan Simpul Sebelum sebuah simpul dihapus, pencarian terhadap simpul tersebut harus dilakukan terlebih dahulu. Bila simpul tersebut ditemukan dalam linked list, simpul tersebut harus dikeluarkan dan keterkaitan antar simpul dalam linked list harus diatur kembali. Kompleksitas untuk menghapus sebuah simpul dalam single linked list adalah O(n). Perhatikan contoh berikut ini: head 3 5 15 6 NULL Bila simpul 15 dihapus maka susunan linked list menjadi: head 3 5 15 6 NULL Implementasi Single Linked List (Sekaligus Bahan Praktikum) /* Program berikut disimpan dalam file linkedlist.h */ typedef struct node * NodePtr; typedef struct node { int data; NodePtr next; Node; Struktur Data 4

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 = NULL; lptr->size = 0; int addlist(list * lptr, int data) { NodePtr new; new = malloc(sizeof(node)); if(new == NULL) { printf("error mengalokasi 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!= NULL) { printf("%d -> ", current->data); current = current->next; Struktur Data 5

printf("null\n"); void freelist(list * lptr) { NodePtr next=lptr->head; NodePtr current=next; while(current!= NULL) { 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; Struktur Data 6

Compile program tersebut dengan cara berikut ini (diasumsikan anda menggunakan OS Linux): 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 melalui prompt dengan perintah: mylist Perhatikan dan pahami keluaran dari implementasi linked list tersebut dan diskusikan dengan teman. Struktur Data 7