Array dan Vector Linked List STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 2 : 23 Juni 2015

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

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

Manage Sort STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 4 : 30 Juni 2015

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

MODUL 6 SINGLE & DOUBLE LINKED LIST

Queue Priority Queue STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 6 : 7 Juli 2015

Algoritma Pemrograman & Struktur Data

STRUKTUR DATA (2) Single Linked List

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

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

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

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

05. Double Linked List

BAB VIII QUEUE (ANTRIAN)

04. Single Linked List

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

LINKED LIST. TUJUAN UMUM Memahami konsep linked list TUJUAN KHUSUS

Struktur Data II. Single Linked List - Non circular

Praktikum Algoritma dan Struktur Data

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

Linked List dan Implementasinya dalam Bahasa Java

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

DIG1G3 Implementasi Struktur Data

KONSEP POINTER DAN LINKED LIST

Algoritma dan Struktur Data

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

Algoritma dan Struktur Data. Ramos Somya

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

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

LAPORAN PRAKTIKUM IX. Oleh:

Gambar 1. Single Linked List

Algoritma dan Struktur Data. Pertemuan 7 Linked List

STACK atau TUMPUKAN. Pertemuan 5 STACK (TUMPUKAN)

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

Algoritma dan Struktur Data. Linked List

Stack STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 5 : 6 Juli 2015

Algoritma dan Struktur Data. Pertemuan 9 Circular Linked List

Modul Praktikum Algoritma dan Struktur Data BAB 6 LINKED LIST

LAPORAN PRAKTIKUM RESMI QUEUE

Gambar 1. Single Linked List

SENARAI BERANTAI (LINK LIST)

SINGLE LINKED LIST (NON CIRCULAR)

STRUKTUR DATA single linked list non circular

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

Gambar 1. Single Linked List

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

Tutorial - Single Linked List

Tugas Studi Kasus. Linked List SLLNC dengan Head & Tail

Bahasa Pemrograman :: Object Oriented Programming

Algoritma Pemrograman & Struktur Data

LIST BERKAIT(LINKED LIST)

ALGORITMA DAN STRUKTUR DATA

Struktur Data Array. Rijal Fadilah S.Si

LIST. Dewi Sartika, M.Kom

Gambar 1. Single Linked List

1. Tipe Data Sederhana Hanya dimungkinkan untuk menyimpan sebuah nilai data dalam sebuah variabel Ada 5 macam : int, float, double, char, boolen

Membuat Binary Search Tree Menggunakan STL Vector C++

Pendahuluan Struktur Data. Nisa ul Hafidhoh

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

Pertemuan 7. REVIEW dan QUIS

REPRESENTASI FISIK LIST LINEAR

STRUKTUR DATA POKOK BAHASAN - 7 STACK ( TUMPUKAN )

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

Kurikulum Qt. Chapter 5 Pointer dan References. Agenda. Apa itu Pointer? Memory Komputer. Mengambil Alamat Memory dari Variabel

TUGAS PENDAHULUAN MODUL 12 PENGENALAN DAN IMPLEMENTASI STRUKTUR DATA STACK

MODUL IV STACK A. TUJUAN

Kisi-Kisi Ujian Akhir Semester Algoritma dan Pemrograman Lanjut

Algoritma dan Struktur Data. Pertemuan 8 Doubly Linked List

BAB IV Antrian(Queue)

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA DOUBLE LINKED LIST CIRCULAR

Lecture Notes On Algorithms and Data Structures. Oleh Thompson Susabda Ngoen

Modul Praktikum Algoritma dan Struktur Data

REVIEW ARRAY. Institut Teknologi Sumatera

A. TUJUAN PEMBELAJARAN

A. TUJUAN PEMBELAJARAN

Single Linked List (1)

STRUKTUR DATA POKOK BAHASAN - 8 QUEUE ( ANTRIAN)

Algoritma Dan Struktur Data II

KUM 3 IMPLEMENTASI LIST

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

ARRAY PENGANTAR PROGRAM STUDI. Institut Teknologi Sumatera

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

BAB II Senarai Berantai (Linked List)

Array VS Linked List

Algoritme dan Pemrograman

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

Single Linked List. Single Linked List

Pendahuluan Struktur Data STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 1 : 20 Juni 2016

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA MODUL KE-2 STACK DAN QUEUE

Pengenalan Array. Array Satu Dimensi

Algoritma Pemrograman & Struktur Data

ALGORITMA DAN STRUKTUR DATA ARRAY STACK DAN QUEUE

List Linear (Linked List) Farah Zakiyah Rahmanti 2014

a[0] a[1] a[2] a[3] a[4] a[5] x

DIG1G3 Implementasi Struktur Data

PRAKTIKUM STRUKTUR DATA QUEUE. SULIDAR FITRI, M.Sc

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

ARNA FARIZA YULIANA SETIOWATI

Transkripsi:

JULIO ADISANTOSO Departemen Ilmu Komputer IPB Pertemuan 2 : 23 Juni 2015

Array Vector Struct Array

Array Array Vector Struct Struktur data linier yang dapat menyimpan lebih dari satu buah nilai, umumnya bertipe data sama Datanya tersimpan secara terurut di memory Memiliki indeks (random access) Abstraksi (contoh): Y = X = {X 0, X 1,..., X (n 1) Y 00 Y 01... Y 0(n 1) Y 10 Y 11... Y 1(n 1)...... Y (m 1)0 Y (m 1)1... Y (m 1)(n 1)

Multidimensional Array Array Vector Struct Array dengan dimensi lebih dari 1, tetap disimpan dalam memory dengan 1 dimensi Contoh: Y = ( 4 2 1 0 0 0 3 1 dapat ditulis sebagai Y = {{4, 2, 1, 0, {0, 0, 3, 1 Jadi, nilai Y 00 = 1 disimpan dalam memory pada indeks ke-0, dan Y 12 = 3 pada indeks ke-6. )

Multidimensional Array Array Vector Struct

STL Array Array Vector Struct Implementasi array dalam C++ dapat menggunakan STL Array

TUGAS #1 Array Vector Struct Buat ADT MATRIK yang memiliki kemampuan sama seperti matrik dua dimensi. Memiliki fungsi transpose, penjumlahan, pengurangan, dan perkalian matrik. Ukuran maksimum matrik adalah 100 100. Dapat dijalankan dengan driver seperti contoh berikut: int main() { array<array<int, 100>, 100> arr={{{5,8,2,{8,3,1; int brr[m][n]={{1,2,1,{0,1,1; MATRIK A,B,C,D,BT; A.make(arr,2,3); B.make(brr,2,3); BT=B.transpose(); C=A+B; C.print(); // menjumlah 2 matrik D=A*BT; D.print(); // mengalikan matrik return 0;

TUGAS #1 Array Vector Struct PRIMITIF dari ADT MATRIK kira-kira seperti berikut: #define M 100 #define N 100 typedef array<array<int, N>, M> AR; class MATRIK { AR dt; // array 2D int nrow, ncol; // ukuran matrik public: void make(...); // membuat matrik void print(...); // mencetak matrik...; // fungsi pendukung lainnya MATRIK transpose(); // memutar matrik friend MATRIK operator+(matrik a, MATRIK b); friend MATRIK operator-(matrik a, MATRIK b); friend MATRIK operator*(matrik a, MATRIK b);

Array Vector Struct Vector

Vector Array Vector Struct Array memiliki kelemahan, antara lain, kurang fleksibel pada masalah ukuran array (harus didefinisikan ukuran maksimum array) Vector merupakan implementasi dari array, tetapi lebih fleksibel, tidak memiliki batasan ukuran array Dalam C++, STL Vector dapat saling dipertukarkan dengan array, tidak demikian halnya dengan Java (ada fungsi konversi toarray()). Tugas: pelajari kembali materi Vector dalam Bahasa Pemrograman sebelumnya.

Array Vector Struct Struct

Struct Array Vector Struct Merupakan suatu struktur data dari serangkaian nilai yang dimungkinkan berbeda tipe datanya. Ingat, nilai dalam array umumnya memiliki tipe data yang sama. Struct dalam C++: struct type_name { member_type1 member_name1; member_type2 member_name2;.. ; typedef type_name alias_name;

(LL) Daftar dari elemen yang saling berkait Elemennya sering disebut node Node-node pembentuk LL tidak disimpan secara terurut - tidak memiliki indeks Akses node secara sekuensial Node tersusun atas dua komponen data: informasi dan pointer Jenis : Single (SLL), Double (DLL).

Node Abstraksi logik SLL TYPE dari SLL: struct nama_node { komponen_informasi; komponen_pointer; ;

SLL Contoh SLL: Mengapa ada pointer head dan tail?

SLL TYPE: struct node { int info; struct node *next; ; typedef struct node Node; PRIMITIF: make, push (front, after, back), search, update (delete), isempty, etc.

PRIMITIF SLL (P02b.cpp) class SLL { Node *head, *tail; public: void make() { head=null; tail=null; Node* make(int val); // make a node int isempty() { return (head==null); void push_back(int val); void push_front(int val); void push_after(int val, int after); Node *find(int val); Node *find_before(int val); void del(int val); void print(); ;

Contoh DRIVER Driver: int main() { SLL list; list.make(); list.push_back(100); list.push_back(50); list.push_front(75); list.print(); list.push_after(35,100); list.print(); list.del(50); list.print(); return 0; Output: 75 -> 100 -> 50 -> NULL 75 -> 100 -> 35 -> 50 -> NULL 75 -> 100 -> 35 -> NULL

Fungsi make(value) Membuat sebuah node bernilai yang ditunjuk oleh pointer (ptr) Nilai yang dikembalikan adalah sebuah pointer ke node yang dibuat Kode program: Node* SLL::make(int val) { Node *temp = new(node); temp->info=val; temp->next=null; return temp;

Fungsi push back(value) Menambahkan node bernilai ke bagian belakang SLL Kode program: void SLL::push_back(int val) { Node *ptr=make(val); if (isempty()) { head=ptr; tail=ptr; else { tail->next=ptr; tail=ptr;

Fungsi push front(value) Menambahkan node bernilai ke bagian depan SLL Kode program: void SLL::push_front(int val) { Node *ptr=make(val); if (isempty()) { head=ptr; tail=ptr; else { ptr->next=head; head=ptr;

Fungsi print() Menampilkan setiap nilai node Kode program: void SLL::print() { Node *ptr=head; for (; ptr!=null; ptr=ptr->next) cout << ptr->info << " -> "; cout << "NULL" << endl;

Fungsi find(value) Mencari node yang memiliki nilai info=value Output berupa pointer ke node yang ditemukan pertama kali, atau NULL jika tidak ditemukan Kode program: Node* SLL::find(int val) { Node *ptr=head; if (isempty()) return NULL; else { while (ptr->next!=null && ptr->info!=val) { ptr=ptr->next; if (ptr->info==val) return ptr; else return NULL;

Fungsi push after(value) Menyisipkan node bernilai value setelah suatu node yang bernilai after. Kode program: void SLL::push_after(int val, int after) { Node *ptr = find(after); if (ptr!=null) { Node *temp = make(val); temp->next = ptr->next; ptr->next = temp;

Fungsi find before (value) Mencari node sebelum node yang memiliki nilai info=value. Bermanfaat untuk fungsi del. Output berupa pointer ke node yang ditemukan Kode program: Node* SLL::find_before(int val) { Node *ptr=head; Node *pra=head; if (isempty()) return NULL; else { while (ptr->next!=null && ptr->info!=val) { pra=ptr; ptr=ptr->next; if (ptr->info==val) return pra; else return NULL;

Fungsi del(value) Menghapus node yang memiliki nilai info=value. Kode program: void SLL::del(int val) { Node *ptr = find(val); if (ptr==head) head=head->next; else { ptr = find_before(val); if (ptr!=null) { if (ptr->next==tail) tail=ptr; ptr->next=(ptr->next)->next;

TUGAS #2 Buat ADT SLL2 yang memiliki kemampuan sama seperti SLL pada contoh, tetapi informasi yang ditangani adalah nim dan ipk (float). Dapat dijalankan dengan driver seperti contoh berikut: int main() { SLL2 list; list.make(); list.push_back("g64204100", 3.14); list.push_back("g64204050", 3.67); list.push_front("g6420075", 2.05); list.print(); list.push_after("g6420035", 2.89, "G64204100"); list.print(); list.del("g64204100"); list.print(); return 0;

TUGAS #2 Output program kira-kira sebagai berikut: (G6420075,2.05)->(G64204100,3.14)->(G64204050,3.67)->NULL (G6420075,2.05)->(G64204100,3.14)->(G6420035,2.89)->(G64204050,3.67)->NULL (G6420075,2.05)->(G6420035,2.89)->(G64204050,3.67)->NULL Tugas 1 dan 2 dikumpulkan melalui LX sesuai batas waktu yang ada, dan akan di-grader secara manual.