Dr. Anto Satriyo Nugroho, M.Eng

Slides:



Advertisements
Presentasi serupa
Double Linked List.
Advertisements

Jawaban PR-01 Dr. Anto Satriyo Nugroho, M.Eng Web:
Pendahuluan Dr. Anto Satriyo Nugroho, M.Eng Web: Mata Kuliah: Dasar Pemrograman.
Flowchart (1) Mata Kuliah: Dasar Pemrograman
Apakah Recursion itu ? Dr. Anto Satriyo Nugroho, M.Eng
Struktur Kendali Proses (Bab 4) Dr. Anto Satriyo Nugroho, M.Eng Web: Mata Kuliah: Dasar.
Elemen dan Struktur Program C
Fungsi (2) Dr. Anto Satriyo Nugroho, M.Eng Web:
Dr. Anto Satriyo Nugroho, M.Eng
Dr. Anto Satriyo Nugroho, M.Eng
Dr. Anto Satriyo Nugroho, M.Eng
Single linked list.
Doubly Linked List Dr. Anto Satriyo Nugroho, M.Eng Web:
STRUKTUR DATA (7) single linked list circular
STRUKTUR DATA (8.1) double linked list non circular
LINKED LIST.
bentuknya, yang dapat berubah pada saat runtime.
Sorting Algorithms Dr. Anto Satriyo Nugroho, M.Eng
Pertemuan 2 STRUKTUR DATA LINKED LIST
List, Stack & Queue (1) Dr. Anto Satriyo Nugroho, M.Eng
Mata Kuliah : Struktur Data Pertemuan : V
LINKED LIST Single Linked List.
LINKED LIST.
Linked List Pembuatan Simpul Awal.
Algoritma dan Struktur Data Daniel Riano Kaparang.
Struktur Data Departemen Ilmu Komputer FMIPA-IPB 2010
Quiz struktur data Genap 2013.
STACK (Tumpukan).
STACK.
STACK.
STRUKTUR DATA (6) single linked list non circular
Operasi pada pohon biner
Single Linked List Yuliana Setiowati, S.Kom.
BY YOHANA N Sumber Kepustakaan : yohananugraheni.files.wordpress.com/.../linked- lis... 1 LINKED LIST.
Algoritma & Struktur Data Linked List Evangs Mailoa.
LINKED LIST by Yohana N.
Struktur Data List Linear : Linked List (Double Linkedlist)
Algoritma dan Struktur Data
Algoritma dan Struktur Data
Pertemuan ketujuh Struktur data st3telkom.ac.id
LINKED LIST.
Struktur Data (Data Structure) – IS 2313
Apakah Stack itu ?. Apakah Stack itu ? Pengertian STACK Secara sederhana diartikan dengan : sebagai tumpukan dari benda sekumpulan data yang seolah-olah.
Pertemuan 7 stack jual [Valdo] Lunatik Chubby Stylus.
Algoritma dan Struktur Data
1 Pertemuan 3 Data Komposit Linked list Matakuliah: T0026/Struktur Data Tahun: 2005 Versi: 1/1.
Algoritma dan Struktur Data
Pertemuan 9 Stack dengan Linked-list
Double linked list non circular
Struktur Data Linked List
STRUKTUR DATA (2) Single Linked List
Single Linked List.
Defri Kurniawan ADT STACK Defri Kurniawan
Algoritma dan Struktur Data
Doubel Linked List.
STACK (Tumpukan).
STACK / TUMPUKAN Struktur Data.
Stack.
Algoritme dan Stuktur Data
STRUKTUR DATA (7) single linked list circular
Stack.
STACK & QUEUE Struktur Data.
Doubel Linked List.
Single Linked List Circular (SLLC)
STRUKTUR DATA (8.2) double linked list circular
Double Linked List.
Variable Static & Linked List
Algoritma dan Struktur Data
SINGLE LINKED LIST (SLL)
Defri Kurniawan ADT STACK Defri Kurniawan
Transcript presentasi:

Dr. Anto Satriyo Nugroho, M.Eng Linked List (2) Dr. Anto Satriyo Nugroho, M.Eng Email: asnugroho@gmail.com Web: http://asnugroho.net/lecture/ds.html

Review kuliah minggu yll. Linked list value Pointer ke sel berikutnya (next) struct CELL { struct CELL *next; int value; } *header; header 13 13 18 24 1 18 2 24 3 value next value next value next (NULL)

Review kuliah minggu yll. Penambahan/Penghapusan hanya bisa dilakukan SESUDAH sebuah sel yang ditunjuk 40      52 37 38 40 next next next 13 52 40 4 38 2 40 13 52 sel yg ditunjuk oleh pointer x sel yg ditunjuk oleh pointer x Hapus sel ini Tambahkan sel baru Penambahan sel baru Penghapusan sebuah sel Kedua proses ini akan menyebabkan perubahan pointer next sel yang terletak pada posisi sebelumnya

Review kuliah minggu yll. Penambahan/Penghapusan hanya bisa dilakukan SESUDAH sebuah sel yang ditunjuk 40      52 37 38 40 next next next 13 52 40 4 38 2 40 13 52 sel yg ditunjuk oleh pointer x sel yg ditunjuk oleh pointer x Hapus sel ini Tambahkan sel baru 40      52 next next skip 13 3 40 37 38 40 next x tak ada perubahan 4 40 2 40 13 52 3 100 52 x tak ada perubahan Penambahan sel baru Penghapusan sebuah sel Kedua proses ini akan menyebabkan perubahan pointer next sel yang terletak pada posisi sebelumnya

Operasi pada Linked List Menambahkan data pada linked list Menambahkan sel baru yang terletak setelah sebuah sel tertentu Menambahkan sel baru pada posisi terdepan sebuah linked list Menghapus data pada linked list Menghapus sebuah sel yang terletak setelah sebuah sel tertentu Menghapus sel pada posisi terdepan sebuah linked list Syarat-syarat pada perbatasan

Syarat-syarat pada perbatasan Hal-hal yang harus diperhatikan Bagaimana menghandle sel terdepan dan terbelakang Proses saat list kosong Program linkedlist.c (Angka diurutkan, nilainya semakin tinggi) Sel yang jadi pusat operasi (pointer p) Pointer yang menunjuk ke address sel sebelumnya (pointer q) 5 7 7 q(=5) p(=7)

Contoh program Linked List Downloadlah program linkedlist.c yang disediakan di situs kuliah http://asnugroho.net/lecture/ds.html Pelajari isinya dan selesaikan fungsi cell_delete

Fungsi insert struct CELL { struct CELL *next; int value; }; typedef struct CELL cell; cell header; cell_insert(int a) { cell *p, *q, *new_cell; /* mencari posisi dimana sel harus dimasukkan */ p = header.next; q = &header; while (p != NULL && a > p-> value) { q = p; p = p->next; }

Akses ke tiap sel satu persatu header 20 38 40 52 70 - 38 2 40 5 52 7 70 12 q p p=header.next = 38 q=&header = 20 while (p != NULL) { q = p; p = p->next; }

Akses ke tiap sel satu persatu header 20 38 40 52 70 - 38 2 40 5 52 7 70 12 q p while (p != NULL ) { q = p; q = 38 p = p->next; p = 40 }

Akses ke tiap sel satu persatu header 20 38 40 52 70 - 38 2 40 5 52 7 70 12 q p while (p != NULL) { q = p; q = 40 p = p->next; p = 52 }

Akses ke tiap sel satu persatu header 20 38 40 52 70 - 38 2 40 5 52 7 70 12 q p while (p != NULL) { q = p; q = 52 p = p->next; p = 70 }

Akses ke tiap sel satu persatu header 20 38 40 52 70 - 38 2 40 5 52 7 70 12 q p while (p != NULL) { q = p; q = 70 p = p->next; p = NULL }

Ingin memasukkan 4(a=4) header 20 38 40 52 70 - 38 2 40 5 52 7 70 12 q 20 38 40 52 70 - 38 2 40 5 52 7 70 12 q p p=header.next = 38 q=&header = 20 p->value=2 while ((p != NULL ) && (p-> value < a)) { q = p; p = p->next; }

Ingin memasukkan 4(a=4) header 20 38 40 52 70 - 38 2 40 5 52 7 70 12 q 20 38 40 52 70 - 38 2 40 5 52 7 70 12 q p p=header.next = 38 q=&header = 20 while ((p != NULL ) && (p-> value < a)) { q = p; q = 38 p = p->next; p = 40 }

Ingin memasukkan 4(a=4) header 20 38 40 52 70 - 38 2 40 5 52 7 70 12 q 20 38 40 52 70 - 38 2 40 5 52 7 70 12 q p p=40 q=38 p->value=5 while ((p != NULL ) && (p-> value < a)) { q = p; p = p->next; } /* Masukkan sel baru */ Keluar dari loop Masukkan 4 sebelum p(value 5)

Ingin memasukkan 4(a=4) header 20 38 40 52 70 - 38 2 40 5 52 7 70 12 q 20 38 40 52 70 - 38 2 40 5 52 7 70 12 q p 35 4 new_cell /* Menambahkan sel baru */ If ((new_cell=(cell*)malloc(sizeof(cell)))==NULL) fatal_error(”memory tidak cukup”); new_cell->next=p; ←di sini new_cell->next diisi dengan 40 q->next=new_cell;  ←di sini q->next diisi dengan 35 new_cell->value=a; } Memasukkan new_cell (value 4) sebelum p(value 5) = memasukkan sel baru sesudah q. Untuk itulah dalam proses ini diperlukan 2 pointer p dan q !

Ingin memasukkan 4(a=4) header 20 38 40 52 70 - 38 2 35 5 52 7 70 12 20 38 40 52 70 - 38 2 35 5 52 7 70 12 35 4 40 new_cell /* Menambahkan sel baru */ If ((new_cell=(cell*)malloc(sizeof(cell)))==NULL) fatal_error(”memory tidak cukup”); new_cell->next=p; ←di sini new_cell->next diisi dengan 40 q->next=new_cell;  ←di sini q->next diisi dengan 35 new_cell->value=a; } Memasukkan new_cell (value 4) sebelum p(value 5) = memasukkan sel baru sesudah q. Untuk itulah dalam proses ini diperlukan 2 pointer p dan q !

Latihan Selesaikan fungsi cell_delete pada program linkedlist.c, untuk menghapus data yang telah ditambahkan pada sebuah list Jelaskan secara singkat program yang dibuat (komentar) Kirimkan program yang dibuat ke asnugroho@gmail.com

Hint Untuk menyelesaikan cell_delete buatlah program dengan urutan sbb. Periksalah, apakah list itu kosong atau tidak. Jika tidak kosong, lanjutkan ke step ②. Jika list itu kosong, tampilkan error message, dan kembalilah ke fungsi main Akseslah sel pada list itu satu persatu dengan pointer p dan q untuk mencari data yang akan dihapus (yaitu a ) Jika sampai akhir ternyata sel yang dihapus tidak ditemukan, tampilkan “Sel yang dihapus tidak ditemukan”, dan kembali ke fungsi main Jika sel yang ingin dihapus ditemukan, hapuslah sel itu dan kembali ke fungsi main

PR Rancanglah bagaimana membuat program stack, tetapi tidak memakai array, melainkan memakai linked-list(Dengan kata lain: Selesaikan fungsi push, pop dan stack_print pada linkedliststack.c) Hint: Penambahan dan penghapusan elemen pada stack harus bisa dijalankan pada O(1). Karena itu penambahan dan penghapusan data harus dilakukan pada sel yang terdepan