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

dokumen-dokumen yang mirip
Variasi List Linier (Bagian 2)

List Linier (Bag. I) IF2121/Algoritma dan Struktur Data Sem. I 2016/ /25/2017 IF2121/Sem I 2017/2018 1

Modul Praktikum Algoritma dan Struktur Data BAB 6 LINKED LIST

Variasi List Linier. Nisa ul Hafidhoh, MT

List Linier. IF2030/Algoritma dan Struktur Data. 11/6/2009 FNA+WDS/IF2030/Sem

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

IKG2A3/ Pemrograman Terstruktur 2

IKG2A3/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Variasi List Linier

Bagian I. Studi Kasus [82] Tanda tangan:

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

MODUL 6 SINGLE & DOUBLE LINKED LIST

A. Bagian I. Studi Kasus

LIST. Dewi Sartika, M.Kom

Algoritma Pemrograman & Struktur Data

Algoritma dan Struktur Data. Ramos Somya

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

SENARAI BERANTAI (LINK LIST)

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

QUEUE Antrian 1. DEFINISI

Struktur Data. Queue (Antrian)

Representasi Logic List Linier

LIST LINIER 1. DEFINISI

05. Double Linked List

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

Linked List 6.3 & 7.3 NESTED LOOP

Algoritma dan Struktur Data. Linked List

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

LINKED LIST. TUJUAN UMUM Memahami konsep linked list TUJUAN KHUSUS

04. Single Linked List

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

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

Algoritma dan Struktur Data. Pertemuan 7 Linked List

MODUL PRAKTIKUM STRUKTUR DATA Modul ke-1, Pertemuan ke-1 Nama file : P01-XXX (XXX adalah 3 digit terakhir NIM) Deskripsi: Senarai, Traversal

List Linear (Linked List) Farah Zakiyah Rahmanti 2014

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

Algoritma dan Struktur Data. Pertemuan 9 Circular Linked List

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Stack (Tumpukan)

POINTER STACK DAN QUEUE. Institut Teknologi Sumatera

BAB IV Antrian(Queue)

Review : Sifat Implementasi Linear List dengan Array

Praktikum Algoritma dan Struktur Data

BAB IX LINKED LIST (SENARAI BERANTAI)

Gambar 3.1. Circular Single Linked List. Deklarasi bisa dilihat kembali di Single Linked List atau Double Linked List.

STACK atau TUMPUKAN. Pertemuan 5 STACK (TUMPUKAN)

BAB IX LINKED LIST (SENARAI BERANTAI)

Pohon Biner Bagian 2 (Pohon Seimbang, Pohon Biner Terurut, Pembangunan Pohon Biner dari Pita Karakter/String)

BAB II Senarai Berantai (Linked List)

DIKTAT KULIAH STRUKTUR DATA. Disusun oleh: Sri Primaini A.

STACK Tumpukan TOP TOP BOTTOM BOTTOM

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

A. Bagian I. Studi Kasus [82]

SINGLE LINKED LIST (NON CIRCULAR)

Single Linked List (1)

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

MODUL PRAKTIKUM STRUKTUR DATA

Algoritma dan Struktur Data. Pertemuan 8 Doubly Linked List

REPRESENTASI FISIK LIST LINEAR

KONSEP POINTER DAN LINKED LIST

Linked List dan Implementasinya dalam Bahasa Java

Algoritma dan Struktur Data

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

BAB 1 PENGANTAR KE STRUKTUR DATA

LAPORAN PRAKTIKUM IX. Oleh:

DIG1G3 Implementasi Struktur Data

SOAL C++ Created by Yuli Astuti,S.Kom Copyright 2009

KONSEP POINTER DAN LINKED LIST

TUGAS PENDAHULUAN MODUL 12 PENGENALAN DAN IMPLEMENTASI STRUKTUR DATA STACK

Array dan Matriks. IF2121 / Algoritma dan Struktur Data Sem / /7/2017 IF2121/sem /2018 1

GANJIL 2009/2010 NIM: Algoritma dan Struktur Data / CS2014 Nama :

Search And Insert Problem (Sorted Double Linkedlist Solution)

ALGORITMA & PEMROGRAMAN

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

LIST BERKAIT(LINKED LIST)

STACK DAN QUEUE (Muhammad Fachrie, STMIK Amikom Yogyakarta)

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

ALGORITMA DAN STRUKTUR DATA

Pengenalan Struktur Data. Farah Zakiyah Rahmanti 2014

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

: Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Linked List. Single Linked List

LINKED LIST. Altien Jonathan Rindengan, S.Si, M.Kom

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

A. TUJUAN PEMBELAJARAN

KONSEP POINTER DAN LINKED LIST

BAB II STACK Atau TUMPUKAN

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

Algoritma dan Struktur Data. Pertemuan 6 Alokasi Memori Dinamis

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

Pohon Biner (Bagian 1)

DIG1G3 Implementasi Struktur Data

ASD. Alokasi Memori Dinamis

A. TUJUAN PEMBELAJARAN

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

Games and Quiz PT II. Dr. Putu Harry Gunawan, MSi.,MSc. phg-simulation-laboratory.com

MODUL PRAKTIKUM STRUKTUR DATA

Tutorial - Single Linked List

Mesin Karakter dan Mesin Kata

Struktur Data II. Single Linked List - Non circular

Gambar 1. Single Linked List

STRUKTUR DATA (2) Single Linked List

Transkripsi:

Soal No. 1 Berikut ini adalah program sirkular linked list terurut, lengkapilah bagian titik-titik dengan jawaban yang anda anggap benar. #include <stdio.h> #include <stdlib.h> // enable malloc() and free() // definisi tipe boolean #include "boolean.h"; #define Nil NULL // definisi Nil /* Deklarasi infotype */ typedef int infotype; /* Stack dengan representasi berkait dengan pointer */ typedef struct SimpulList * alamat; typedef...(c)... SimpulList { /* lengkapi komentar poin (d) dan (e) */ infotype Info; // deklarasi Info sebagai nilai dari sebuah simpul list alamat Next; // deklarasi Next sbg alamat ref slnjt sebuah simpul list Simpul; typedef struct { alamat HEAD; ListSirkuler; /* Selektor */ #define Next(P) (P)->Next #define Info(P) (P)->Info #define First(L) (L).HEAD alamat Alokasi(infotype X) { alamat P = (alamat) malloc(sizeof(simpul)); if (P!= Nil) { Info(P) = X; Next(P) = Nil; return P; void Dealokasi(alamat P) { free(p); void BuatListKosong(ListSirkuler* L) { First(*L) = Nil; // ciri list kosong boolean CekKosong(ListSirkuler L) { return First(L) == Nil; void TambahTerurut(ListSirkuler* L, alamat P) { alamat T = First(*L); // set pointer iterasi awal menunjuk elemen Head /* kasus tambah elemen pada list kosong */ if (CekKosong(*L)) { First(*L) = P; // set simpul yang ditambahkan sebagai elemen head Next(*L) = P; // referensi simpul selanjutnya adalah diri sendiri Halaman 1 / 5

/* kasus tambah elemen tepat sebelum head */ /* nilai elemen P lebih kecil atau sama dengan elemen Head */ else if (Info(P) <= Info(First(*L))) { while (Next(T)!= First(*L)) { T = Next(T); // pointer maju satu node Next(T) = P; // tambah elemen P dalam List Next(P) = First(*L); // set referensi simpul slnjtnya dari simpul P First(*L) = P; // elemen Head sekarang adalah elemen P /* kasus tambah elemen, dimanapun setelah head */ else { while (Next(T)!= First(*L) && Info(Next(T)) < Info(P)) { T = Next(T); // pointer maju satu node Next(P) = Next(T); //set referensi simpul slnjtnya dari simpul P Next(T) = P; // tambah elemen P dalam List int main() { // untuk simulasi input struktur data int urutaninput[5] = {12, 56, 2, 11, 2; int i; alamat P; ListSirkuler L; BuatListKosong(&L); // buat list baru // tambah elemen list sirkuler terurut for (i = 0; i < 5; i++) { P = Alokasi(urutanInput[i]); if (P!= Nil) { TambahTerurut(&L, P); // tambah elemen printf("\nsetelah tambah elemen ke-%d", i+1); PrintInfo(L); return 0; Halaman 2 / 5

Soal No. 2 Lengkapilah kode program berikut agar menjadi program yang diinginkan dengan menerapkan konsep double linked list. Program ini akan menyimpan angka lebih besar dari 0 dalam double linked list, dengan menggunakan skema: - Jika angka > 0 dan angka adalah genap, maka dimasukkan di bagian depan List - Jika angka > 0 dan angka adalah ganjil, maka dimasukkan setelah First dari suatu List - Jika angka = 0, maka ada penghapusan data di bagian depan dari List - Jika angka < 0, maka akan keluar peringatan bahwa Input yang dimasukkan adalah salah #include <stdio.h> #include <stdlib.h> #include "boolean.h" #define Nil NULL typedef int infotype; typedef struct TElmtList *address; typedef struct TElmtList { infotype info; address prev; address next; ElmtList; typedef struct { address first; address last; List; #define Info(P) (P)->info #define Prev(P) (P)->prev #define Next(P) (P)->next #define First(L) (L).first #define Last(L) (L).last void CreateEmpty(List *L) /* Diasumsikan fungsi ini sudah berjalan dan siap digunakan, dengan I.S. Sembarang F.S. Terbentuk List L Kosong dengan First dan Last adalah Nil*/ boolean IsEmpty(List L) /* Diasumsikan fungsi ini sudah berjalan dan siap digunakan, dengan tujuan akan mengirimkan nilai True jika List kosong, dan nilai False jika sebaliknya.*/ void Dealokasi(address P) /* Diasumsikan fungsi ini sudah berjalan dan siap digunakan, dengan tujuan menghapus atau mengembalikan memori yang digunakan sebelumnya untuk menyimpan ElmtList*/ Halaman 3 / 5

address Alokasi(infotype X) { /*I.S. Diberikan nilai X yang akan dimasukkan ke dalam ElmtList F.S. terbentuk ElmtList yang mana nilai X sebagai info-nya dan Nil sebagai next serta prev*/ address NodeBaru; NodeBaru = (ElmtList*) malloc (sizeof(elmtlist)); Info(NodeBaru) = X; Next(NodeBaru) = Nil; Prev(NodeBaru) = Nil; void InsertFirst (List *L, address *P) { /*I.S. List mungkin kosong dan diberikan ElmtList yang siap dimasukkan ke List F.S. ElmtList baru masuk ke dalam list pada posisi depan*/ if (IsEmpty(*L)) { Last(*L) = *P; else { Prev(First(*L)) = *P; Next(*P) = First(*L); First(*L) = *P; void InsertAfterFirst(List *L, address *P) { /* I.S. List mungkin kosong dan diberikan ElmtList yang siap dimasukkan ke List F.S. Jika List kosong maka akan dilakukan operasi InsertFirst sedangkan jika tidak Maka ElmtList baru akan diletakkan pada setelahnya data pertama (first)*/ if (IsEmpty(*L)) { InsertFirst(L,P); else { Next(*P) = Next(First(*L)); Prev(*P) = First(*L); if (Last(*L) == First(*L)) { Last(*L) = *P; else { Prev(Next(First(*L))) = *P; Next(First(*L)) = *P; Halaman 4 / 5

void DeleteFirst(List *L) { /* I.S. List tidak mungkin kosong F.S. Hapus ElmtList pada bagian paling depan/awal, dan lakukan proses ealokasi*/ address Hapus; if (!IsEmpty(*L)) { Hapus = First(*L); if (First(*L) == Last(*L)) { Last(*L) = Nil; else { Prev(Next(First(*L))) = Nil; First(*L) = Next(First(*L)); Next(Hapus) = Nil; Dealokasi(Hapus); void InsertAngka(List *L, infotype X) { /* I.S. List mungkin kosong dan diberikan nilai X yang akan dimasukkan dalam List F.S. ElmtList baru yang berisi nilai X dapat masuk ke List sesuai dengan skema yang telah dijabarkan sebelumnya.*/ address NodeBaru; NodeBaru = Alokasi(X); if (X > 0) { if (X % 2 == 0) { InsertFirst(L, &NodeBaru); else { InsertAfterFirst(L, &NodeBaru); else if (X == 0) { DeleteFirst(L); else { printf("inputan angka yang anda masukkan salah. \n"); Halaman 5 / 5