Manage Sort STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 4 : 30 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

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

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

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

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

ARRAY PENGANTAR PROGRAM STUDI. Institut Teknologi Sumatera

Algoritma Pemrograman & Struktur Data

LATIHAN SOAL (FUNGSI & PROSEDUR)

REVIEW ARRAY. Institut Teknologi Sumatera

Membuat Binary Search Tree Menggunakan STL Vector C++

LINKED LIST. TUJUAN UMUM Memahami konsep linked list TUJUAN KHUSUS

LAPORAN PRAKTIKUM RESMI QUEUE

BAHASA PEMROGRAMAN 1 (PERTEMUAN 3)

Bahasa Pemrograman :: Object Oriented Programming

Penggunaan Private dan Public dalam C++

STRUKTUR DASAR PEMROGRAMAN

SENARAI BERANTAI (LINK LIST)

KONSEP POINTER DAN LINKED LIST

DASAR PEMROGRAMAN. Institut Teknologi Sumatera

ARRAY / LARIK. Oleh : Agus Priyanto, M.Kom SEKOLAH TINGGI TEKNOLOGI TELEMATIKA TELKOM. Smart, Trustworthy, And Teamwork

Pertemuan 7. REVIEW dan QUIS

SUB PROGRAM P E N G A N TA R P R O G R A M S T U D I. Institut Teknologi Sumatera

PENGANTAR KOMPUTER & SOFTWARE II

04. Single Linked List

Linked List dan Implementasinya dalam Bahasa Java

MODUL 6 SINGLE & DOUBLE LINKED LIST

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

LAPORAN PRAKTIKUM IX. Oleh:

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

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

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

Minggu III STRUKTUR PEMILIHAN (KONTROL PROGRAM)

StrukturDasarProgram Prosedural (dalambahasac++)

KONSEP POINTER DAN LINKED LIST

05. Double Linked List

Subprogram (dalam Bahasa C++ + Flowchart)

PENGANTAR KOMPUTER & SOFTWARE II PERCABANGAN

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

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

LIST BERKAIT(LINKED LIST)

P3 Dasar Struktur Data TIF42/SIF42

Kisi-Kisi Ujian Akhir Semester Algoritma dan Pemrograman Lanjut

PEMROGRAMAN TERSTRUKTUR PERTEMUAN VI KOMPONEN KOMPONEN PEMROGRAMAN TERSTRUKTUR

PERCABANGAN P E N G E N A L A N P R O G R A M S T U D I T E K N I K I N F O R M AT I K A. Institut Teknologi Sumatera

PENGANTAR KOMPUTER & SOFTWARE II PERCABANGAN

STRUKTUR DATA (2) Single Linked List

PENGANTAR KOMPUTER & SOFTWARE II. Array (Part II) Tim Pengajar KU Institut Teknologi Sumatera

PENGANTAR KOMPUTER & SOFTWARE II. Pengulangan (For) Tim Pengajar KU Institut Teknologi Sumatera

SINGLE LINKED LIST (NON CIRCULAR)

PEMROGRAMAN BERORIENTASI OBJEK. Tipe Data. Budhi Irawan, S.Si, M.T

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

Kisi-Kisi Ujian Tengah Semester Algoritma dan Pemrograman Lanjut

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

UJIAN TENGAH SEMESTER KU1072/PENGENALAN TEKNOLOGI INFORMASI B SEM /2014

Algoritma dan Struktur Data. Ramos Somya

Algoritma Dan Struktur Data II

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

ALGORITMA RINTA KRIDALUKMANA SISKOM UNDIP

TIPE DATA ABSTRAK MENGGUNAKAN BAHASA C

Instalasi Code::Blocks, Tipe Data, Variabel, Konstanta, Operator, Input-Output dan Flowchart

Struktur Data Array. Rijal Fadilah S.Si

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

PERULANGAN P E N G A N TA R P R O G R A M S T U D I. Institut Teknologi Sumatera

Praktikum Algoritma dan Struktur Data

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA STACK

Gambar 1. Single Linked List

Pemrograman Berorientasi Obyek (C++) Departemen Ilmu Komputer FMIPA IPB 2013

Chapter 9 Operator Types dan Operator Overloading

//Kelas ini berisi data yang hendak disimpan ke dalam database

INF-103 Pemrograman II VECTOR & STRING. Dr. Taufik Fuadi Abidin, M.Tech Irvanizam Zamanhuri, M.Sc. Program Studi Informatika FMIPA UNIVERSITAS KUALA

SATUAN ACARA PENGAJARAN

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

STACK atau TUMPUKAN. Pertemuan 5 STACK (TUMPUKAN)

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

PRAKTIKUM STRUKTUR DATA QUEUE. SULIDAR FITRI, M.Sc

UJIAN AKHIR SEMESTER GANJIL 2008/2009 ALGORITME DAN PEMROGRAMAN Sabtu, 31 Januari 2009; Pukul 13:30 16:00; CATATAN TERTUTUP

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

Array ARRAY BERDIMENSI SATU. Representasi (Pemetaan) di memori. Lihat gambar dibawah ini, nilai data A (18) dismpan mulai dari alamat 1136 di memori.

Inheritance dan Polimorfisme

TIM ASISTEN PRAKTIKUM ALGORITMA DAN PEMROGRAMAN 2016

BAB VIII QUEUE (ANTRIAN)

Algoritme dan Pemrograman

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

Politeknik Elektronika Negeri Surabaya

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

Everybody in this country should learn how to program a computer because it teaches you how to think. Steve Jobs

Algoritma dan Struktur Data

TUGAS PENDAHULUAN MODUL 12 PENGENALAN DAN IMPLEMENTASI STRUKTUR DATA STACK

Algoritma dan Struktur Data. Pertemuan 9 Circular Linked List

DIG1G3 Implementasi Struktur Data

Array (Tabel) [DalamBahasaC++]

Praktikum Algoritma dan Struktur Data 2010

SILABUS STRUKTUR DATA ( TIF-104 ) PROGRAM STUDI TEKNIK INFORMATIKA UNIVERSITAS PEMBANGUNAN JAYA TANGERANG SELATAN

Struktur Data II. Single Linked List - Non circular

Spesifikasi: Ukuran: 14x21 cm Tebal: 225 hlm Harga: Rp Terbit pertama: Februari 2005 Sinopsis singkat:

Gambar 1. Single Linked List

Dasar Pemrograman. Visual Studio Program C++ Sederhana. Yoannita, S.Kom.

Transkripsi:

Manage JULIO ADISANTOSO Departemen Ilmu Komputer IPB Pertemuan 4 : 30 Juni 2015

Manage Append Merge Pengolahan Linked List

Manage Pengolahan Linked List Append Merge Sebelumnya telah dipelajari beberapa operasi dasar yang merupakan spesifikasi PRIMITIF dari Linked List (SLL dan DLL), yaitu: make, push (front, after, back), find, del. Pengolahan lanjut terhadap Linked List (LL) yang sering dilakukan adalah: Merge : menggabungkan dua LL

Merge Dua LL Manage Append Merge Diketahui LL1 dan LL2, misalnya: LL1 = {5,10,12,3 LL2 = {2,15,7 Diinginkan untuk menggabungkan LL2 ke dalam LL1 Cara penggabungan: LL2 di belakang LL1 LL1={5,10,12,3,2,15,7 (append) Dengan syarat tertentu, misalnya merge sort LL1={3,5,10,12 LL={2,3,5,7,10,12,15 LL2={2,7,15

Algoritme Append Manage Append Merge Prosedur Append Input: LL1,LL2 Output: LL1+LL2 if (LL1.isEmpty()) then head LL1 head LL2 end else (tail LL1 ->next) head LL2 end Bagaimana kode programnya? Harus ada fungsi publik untuk mengambil head dari LL.

Algoritme Append Manage Append Merge Tambahkan fungsi gethead() Node* gethead() {return head; Fungsi append(ll) void SLL::append(SLL pl) { if (isempty()) head=pl.gethead(); else tail->next=pl.gethead(); Contoh driver list.append(list2); list.print();

Algoritme Append Manage Append Merge Append menggunakan STL (tambahan p03a.cpp) SLLP::iterator gethead() {return dt.begin(); SLLP::iterator gettail() {return dt.end(); void append(sll pl) { SLLP::iterator it=dt.begin(); SLLP::iterator pra=it; for (; it!=dt.end(); pra=it, ++it); dt.insert_after(pra, pl.gethead(), pl.gettail());

Algoritme Merge Manage Append Merge Prosedur Merge Input: LL1,LL2 Output: LL1+LL2 1: LL1.sort() 2: LL2.sort() 3: LL1.merge(LL2) Membutuhkan fungsi sort. Kita bahas dahulu algoritme sort

Manage Menyusun sekelompok elemen data yang tidak terurut menjadi terurut berdasarkan suatu kriteria tertentu. Mempermudah dan mempercepat proses pencarian data Jika pencarian data mudah, maka proses manipulasi data juga akan lebih cepat.

Metode Manage Prosedur dan Kinerja dibahas dalam MK Analisis Algoritme

Ordered Linked List Manage Melakukan sort terhadap suatu linked list membutuhkan sumberdaya yang tidak sedikit (mengapa?) Dijaga agar suatu linked list tetap terurut berdasarkan key tertentu Ordered Linked List Spesifikasi PRIMITIF push berusaha agar linked list tetap terurut.

Manage Ordered Linked List : Contoh Kasus Diinginkan DLL untuk menyimpan n data nim, jenkel, dan tinggi: Contoh input 5 G64090120 L 165.4 G64090160 P 169.7 G65090025 L 167.9 G64090140 L 170.2 G64090050 P 168.3 Susunan dalam DLL G64090050 P 168.3 G64090120 L 165.4 G64090140 L 170.2 G64090160 P 169.7 G65090025 L 167.9

Manage Ordered Linked List : Contoh Kasus Driver int main() { OrderedDLL list; int n; string nim; char jenkel; float tinggi; cin >> n; while (n--) { cin >> nim >> jenkel >> tinggi; list.push(nim,jenkel,tinggi); list.print(); return 0;

Manage Ordered Linked List : Contoh Kasus Spesifikasi TYPE (p04a.cpp) #include <iostream> #include <list> #include <string> using namespace std; struct mydata { string nim; char jenkel; float tinggi; ; typedef struct mydata MD; typedef list<md> mytype;

Manage Ordered Linked List : Contoh Kasus Spesifikasi PRIMITIF (p04a.cpp) class OrderedDLL { mytype dt; MD makenode(string nim, char jenkel, float tinggi) { MD t; t.nim=nim; t.jenkel=jenkel; t.tinggi=tinggi; return t; mytype::iterator posisi(string nim); mytype getdata() {return dt; public: void push(string nim, char jenkel, float tinggi); void print(); ;

Manage Ordered Linked List : Contoh Kasus Fungsi posisi (p04a.cpp) mytype::iterator OrderedDLL::posisi(string nim) { mytype::iterator it=dt.begin(); for(; it!=dt.end(); ++it) if (it->nim>=nim) return it; return it;

Manage Ordered Linked List : Contoh Kasus Fungsi push (p04a.cpp) void OrderedDLL:: push(string nim, char jenkel, float tinggi) { MD node=makenode(nim,jenkel,tinggi); if (dt.empty()) dt.push_front(node); else { mytype::iterator it=posisi(nim); if (it==dt.end()) dt.push_back(node); else dt.insert(it, node);

Manage Ordered Linked List : Contoh Kasus Fungsi print (p04a.cpp) void OrderedDLL::print() { mytype::iterator it; for (it=dt.begin(); it!=dt.end(); ++it) cout << it->nim << " " << it->jenkel << " " << it->tinggi << endl;

Manage Ordered Linked List : Contoh Kasus Fungsi merge (p04a.cpp) void OrderedDLL::merge(OrderedDLL pl) { mytype dt2=pl.getdata(); mytype::iterator it=dt.begin(); mytype::iterator it2=dt2.begin(); for(;it2!=dt2.end();++it2) { MD t={it2->nim,it2->jenkel,it2->tinggi; while (it->nim<it2->nim && it!=dt.end()) ++it; dt.insert(it,t);

Doubly Linked List Manage Bagaimana jika DLL biasa? Bukan Ordered DLL? Sangat mudah karena menggunakan STL list. Fungsi membandingkan NIM (p04b.cpp) static bool cmpnim(md a, MD b) { return (a.nim<b.nim); Fungsi merge void DLL::merge(DLL pl) { mytype dt2=pl.getdata(); dt.sort(cmpnim); dt2.sort(cmpnim); dt.merge(dt2,cmpnim);

Tugas #4 Manage Pak Agri memiliki banyak petak kebun penelitian tanaman jagung. Setiap petak berisi sejumlah tanaman jagung yang berbeda-beda, dan dicatat tinggi tanaman masing-masing. Di akhir penelitian, Pak Agri mengambil n petak sampel secara acak. Sampel ini kadang ditambah, kadang dikurang, maupun ditukar. Ingin dicetak data sampel tersebut terurut berdasarkan kode petak (URUTKODE) atau rata-rata tinggi tanaman di dalam petak (URUTRATA). Format input Baris pertama adalah banyaknya petak (n). Sebanyak n baris berikutnya adalah kode petak, banyaknya sampel, dan tinggi tanaman setiap sampel. Baris terakhir adalah key untuk sort, URUTKODE atau URUTRATA.

Tugas #4 Manage Contoh input 5 F123 5 56.2 32.4 14.2 43.7 10.5 B651 2 89.9 87.2 G769 1 87.5 A902 3 11.9 13.6 20.4 C300 2 56.5 67.3 URUTRATA Contoh output A902 : 11.9->13.6->20.4->NULL F123 : 56.2->32.4->14.2->43.7->10.5->NULL C300 : 56.5->67.3->NULL G769 : 87.5->NULL B651 : 89.9->87.2->NULL