abstract data type
TRANSCRIPT
Abstract Data Type(C++ and Java)
Container• Sebuah struktur data dapat dipandang
sebagai tempat penyimpanan benda (container).
• Beberapa hal yang dapat dilakukan:– Membuat container baru(konstruktor)– Menaruh benda– Mengambil benda– Mencari benda tertentu– Mengosongkannya (atau periksa
apakah kosong)– Mendapatkan jumlah benda dalam
container (size)• Di C++ container diimplementasikan oleh
Standart Template Library• Di Java, container diimplementasikan oleh
class Collection dan Map
Container
Data
ADT in C++
Abstract Data Type (ADT) in C++
• Diimplementasikan oleh Standart Template Library(STL)
• ADT Container di C++ terdiri dari 3 macam– Sequence containers => Container yang tersusun
berderet-deret.– Associative containers => merupakan container
yang key-nya diasosiasikan dengan suatu value.– Container adapters => merupakan containers
dengan interface spesifik, memanfaatkan containers lain untuk implementasinya.
Sequence containers
• vectorrapid insertions and deletions at back direct access to any element
• dequerapid insertions and deletions at front or back direct access to any element
• listdoubly linked list, rapid insertion and deletion anywhere
Associative containers
• setrapid lookup, no duplicates allowed
• multisetrapid lookup, duplicates allowed
• mapone-to-one mapping, no duplicates allowed, rapid key-based lookup
• multimapone-to-many mapping, duplicates allowed, rapid key-based lookup
Container adapters
• stacklast-in, first-out (LIFO)
• queuefirst-in, first-out (FIFO)
• priority_queuehighest-priority element is always the first element out
Queue
•Sebuah Queue adalah kumpulan benda di mana hanya benda yang least recently inserted dapat diakses.
•Bayangkan antrian printer job pada jaringan.•Benda yang paling awal ditambahkan berada di depan antrian (front).•Operasi pada Queue membutuhkan waktu konstan (O(1)).
enqueue
Most recent
Least recent
dequeuegetFront
Set
tambah
Map
• Map adalah struktur data yang berisi sekumpulan pasangan nama (keys) dan nilai (values) dari nama tersebut.
• Nama (Keys) harus unik, tapi nilai (values) tidak.• Bayangkan basis-data yang berisi informasi peserta kuliah. Apa yang menjadi
“nama” (keys)?
Abdul Betty Chairul DianNama:
Nilai:
Priority Queue
• Priority Queue adalah struktur data queue yang tiap elemen data dapat miliki nilai prioritas. Data dengan nilai prioritas tertinggilah yang dapat diakses terlebih dulu.
• Bayangkan sebuah antrian pada printer jaringan. Misalkan ada sebuah permintaan cetak untuk 100 halaman hanya beberapa detik lebih awal dari permintaan cetak selembar halaman.
Highest priority
insert deleteMin
findMin
Iterator
Sebuah object yang mengizinkan programmer melintasi semua element data dari sebuah collection, tanpa memperhatikan bagaimana sebuah collection diimplementasikan
Objek iterator mengendalikan iterasi pembacaan data pada struktur data.
Secara umum Iterator bekerja sebagai berikut: Mulai dengan mengatur iterator pada elemen pertama pada
struktur data. Satu-persatu berlanjut pada elemen selanjutnya Berakhir ketika tidak ada lagi elemen pada struktur data yang
belum dibaca.
Iterator
Iterator
Collection
User(program yang
mengakses data)
STL
• STL => Standard Template Library– Adalah merupakan kumpulan library yang
melengkapi library standard C++.– Berisi kumpulan class-class yang umum digunakan,
seperti container, algorithm, dan iterator.– Menyediakan algoritma dan struktur data dasar
untuk permasalahan komputasi.
STL
STL (meliputi)• Container
– Sequence Container : vector, deque, list– Associative containers : set, multiset, multimap, map– Container adapters :stack, queue, priority queue
• Algorithm : equal, mismatch, lexicographical_compare, remove, remove_if, replace, replace_if, random_shuffle, count, count_if, min_element, max_element, accumulate, for_each , dll
• Iterator
ADT in Java
• Diimplementasikan oleh library Collection Classes• Ketika ada data dan wadah, data tersebut ditata dalam
wadah dengan beberapa cara berikut :– Disusun berdasarkan urutan atau berderet-deret.
Contoh : Array , Linked List, Vector– Disimpan tanpa memperhatikan urutan
(analogi seperti menyimpan dalam karung)Contoh : Set
– Data disimpan berpasangan key-value nya. Seperti data phonebook, key berupa nama orang, value berupa nomer teleponContoh : Map
Abstract Data Type in Java
Abstract Data Type (ADT) in Java
• List– Vector– ArrayList– LinkedList
• Set– HashSet– TreeSet
• Map– TreeMap– HashTable– HashMap
Java 2 Collections ©1999 Trygve Reenskaug
19
Collection Classes Java 2
Library untuk implementasi ADT di Java
AbstractCollection
HashSet
TreeSet
ArrayList TreeMap
Hashtable(superclass:
Dictionary)
Concrete Collections
concrete implements description collection
ArrayList List resizable-array LinkedList List linked list Vector List resizable-arrayHashSet Set hash table TreeSet SortedSet balanced binary tree HashMap Map hash table TreeMap SortedMap balanced binary tree Hashtable Map hash table
Vector
Hash table
• A hash table is an array of linked lists. Each list is called a bucket