BAB 2.
STRUKTUR DATA
Tipe Data
Tipe Data Abstrak
Tingkatan Abstraksi Tipe Data
Jenis-jenis struktur data
z
Array
z
Karakteristik
z
Tipe data Abstrak pada Array
zDimensi Array
z
Array Multidimensi
z
Pencapaian (access) Data
z
Pencapaian berdasarkan indeks
zArray Mapping Functions
z
Parameter Array
zFungsi Pemetaan
zRumus AMF
z
Rumus perhitungna besarnya
z
STRUCTURE
zKarakteristik
z
Deklarasi Structure
z
Tipe Data Abstrak pada Struct
zStruktur Mapping Function
z
Parameter mapping Function
zParameter Structure
z
Rumus Umum SMF
z
Memori yang digunakan oleh struct
zArray of Structure
z
Linked List
z
Tinjau ulang Pointer
zStruktur Linked List
z
Double Linked List
z
Bentuk Circular Duble Linked
List(linked List ganda Melingkar)
z
STACK
z
Operasi dalam Stack
z
Implementasi stack dengan linked list
zAplikasi Stack
z
Konfersi Infix ke Postfix
zAlgoritma Evaluasi Postfix
z
QUEUE
z
Operasi dalam Queue
zProses Enqueu
z
Proses Dequeu
zCircular Queue
z
Implementasi Queu dalam linked list
zPriority Queue
z
Representasi Priority Queue
z
Binary Tree
z
Bentuk umum Binary Tree
zKarakteristik Binary Tree
zHubungan Parent-Child
z
Hubungan Ancestor-Descendant
zTree Path Lenght
z
Binary Search Tree
z
Bentuk Khusus Binary Tree
zRekursive pada Binary Tree
zTree Traversal
z
Operasi pada Binary Tree
z
Implementasi Binary Tree pada
Array
z
Implementasi dengan double
Linked List
z
Implementasi dengan Multi Linked
List
zExpression Tree
zAVL TREE
zPivot
zRotasi Ganda
zHEAP
zMembangun Heap
zRotasi Ganda
zB-Tree
z
Perbandingan Struktur data
zKarakteristik B-Tree
z
HASHING
z
Practical Hashing Function
z
Penempatan elemen ke dalam tabel
hashing
z
Collision
z
GRAPH
TUJUAN UMUM
z
Memperkenalkan mahasiswa
tentang tipe data
TUJUAN KHUSUS
z
Memperkenalkan mahasiswa
tentang DATA ATOMIK
z
Memperkenalkan mahasiswa
tentang DATA komposit
z
Penerapan array
Struktur Data
z Metode untuk mengorganisasikan data di dalam
memori komputer, sehingga data dapat diolah secara efisien, yaitu:
1. Menggunakan tempat yang sehemat mungkin di
memori
2. Menggunakan waktu yang secepat mungkin untuk menyimpan dan mengambil data
z Seringkali dua keadaan di atas tidak bisa
dicapai sekaligus, tetapi harus dicapai suatu kompromi dari dua keadaan di atas dan untuk itulah Struktur Data dipelajari.
TIPE DATA
z Mendeklarasikan tipe data adalah suatu cara
untuk menetapkan:
1. Informasi apa yang terkait dengan data 2. Ukuran memori yang digunakan oleh data 3. Operasi apa yang dapat dilakukan terhadap
z
CONTOH:
int x; char c; float y;
Var x: menempati 2-byte memori, informasi yang terkait adalah data integer(bilangan bulat), operasi yang dapat dilakukan: kali, bagi, tambah, kurang dan sisa hasil bagi. Rentang nilai bilangan: -3278 s/d 32767 Var c: menempati 1-byte memori informasi
yang terkait adalah kata karakter (tabel ASCII), operasi yang dilakukan:
menyambung, menyalin karakter (concatenation, copy, etc)
Var y: menempati 4-byte memori informasi yang terkait adalah data float (bilangan pecahan), operasi yang dapat dilakukan: kali, bagi, tambah, kurang.
Rentang nilai bilangan bulat: -3.4x10-38 s/d
3.4x10-38
Kelas Tipe Data
TIPE DATA ABSTRAK (TDA)
z Abstraksi:Suatu proses yang sengaja mengurangi rincian dari suatu objek, dengan harapan dapat memahami objek tersebut dengan baik atau lebih nudah.
Tingkatan abstraksi sesuai dengan seberapa besar rincian-rincian dihilangkan.
Tingkatan abstraksi dapat berbeda,
tergantung dari sudut pandang seseorang terhadap suatu objek.
Contoh:
Abstraksi terhadap objek mobil: 1. Bagi pemilik, mobil adalah:
- Merk/tipe/tahun mobil - Warna
2. Bagi Sopir, mobil adalah: - Stir (kemudi)
- Pedal gas, kompling dan rem 3. Bagi montir, mobil adalah:
- Mesin, karburator, pengapian, distributor, dsb.
Tingkatan Abstrasi Tipe Data
1. Tipe Data Abstrak: Timbul dari hasil Imajinasi
2. Tipe Data Virtual: Terdapat dalam suatu bahasa
pemrograman (virtual prosesor)
3. Tipe data Fisik: Secara fisik dalam memori
komputer Contoh:
Tipe Data Atomik Terstruktur
Abstrak Jml mahasiswa Tabel Suhu Virtual Integer Array
z Keuntungan menggunakan TDA: 1. Modularitas 2. Penyembunyian Informasi 3. Kebebasan Pelaksanaan 4. Integritas Data 5. Penyederhanaan Masalah
z Langkah-langkah menterjemahkan TDA ke
Virtual:
1. Pilih bahasa pemrograman yang akan
digunakan: C/C++, Pascal
2. Pilih cara untuk merepresentasikan data
dalam bentuk: Array, struct, record, set, dsb.
3. Tulis program untuk implementasi
JENIS-JENIS STRUKTUR DATA:
1. Linier: Struktur yang setiap elemen
mempunyai hubungan satu-satu (one to one) dengan elemen lainnya
2. Tree/Hirarki:Struktur yang setiap
elemennya mempunyai hubungan satu-banyak (one to many) dengan elemen lainnya.
1
6
9
2
4
7
5
3. Graph/Jaringan
Struktur yang setiap elemen mempunyai
hubungan banyak-banyak (many to many)
dengan elemen lainnya.
A
F
G
E
C
B
z SET: Struktur yang elem-elemennya hanya
mempunyai hubungan keangotaan, tidak ada elemen pertama, kedua…,
terakhir.Urutan elemen di dalam set tidak penting
Contoh:
S1 = {a,b,c} S2={b,a,c} S3={c,b,a} maka S1=S2=S3
Latihan
1. Sebutkan tingkatan abstraksi untuk objek: Komputer, Radio
2. Berikan contoh struktur linier, hirarki,
jaringan dan set dalam kehidupan sehari-hari
ARRAY
KARAKTERISTIK
- Hubungan antara elemen linier
- Penempatan di memori secara fisik maupun
logik sama
- Hubungan antara indeks dengan komponen
adalah one-to-one
- Tipe data homogen - Cara access Random
TIPE DATA ABSTRAK ARRAY
- Retrieve(s, k, i);
Mengambil data sari array s pada indeks i untuk disimpan di variabel k.
Implementasi: k = s[i];
- Update(s, k, i);
Mengubah nilai data dari array s pada indeks i, dengan nilai dari variabel k. Implementasi:
z
CONTOH:
Buat suatu algoritma dengan menggunakan kedua operator Retrieve( ) dan update( ) untuk:
1. Menyalin isi array A ke array B
2. Menjumlakah array A dengan array B,
hasilnya disimpan di array C. DIMINSI ARRAY Array 1-Dimensi z List z Vektor Array 2-Dimensi z Tabel z Matriks ARRAY MULTIDIMENSI
Secara teoritis jumlah dimensi array tidak
terbatas, tetapi secara praktis array digunakan hanya sampai dimensi 3.
PENCAPAIAN (ACCESS) DATA
Positional Access
Pencapaian data berdasarkan nilai indeks
Assocoative Access
Pencapaian data berdasarkan nilai/isi komponen
Pencapaian berdasarkan indeks
a. Alamat (address) komponen di memori
dapat dihitung berdasarkan nilai indeks.
b. Array dengan d-dimensi, memerlukan d
penjumlahan dan d perkalian.
c. Kecepatan perhitungan tidak tergantung
kepada banyaknya komponen, tetapi tergantung kepada besarnya dimensi. Contoh: 1. Int A[10000]; Banyaknya komponen = 10000 2. Int B[10][10] Banyaknya komponen = 100 3. Int C[2][2][2]
z ARRAY MAPPING FUNCTION
Fungsi untuk memetakan komponen array pada indeks i ke alamat di memori
Perhitungan AMF memerlukan parameter array
z
Parameter Array
1.
Alamat awal (b)Alamat komponen pertama array di memori. Pada dasarnya alamat ini tidak diketahui oleh pemrogram, sehingga nilai b selalu dimisalkan
2. Panjang komponen(L)
Ukuran tipe data(dalam byte) yang
digunakan, seperti integer: L = 2, Char: L=1 dan float: L= 4
3. Batas bawah (lk) dan batas atas (uk) Untuk deklarasi array: int x[12]; maka :
l1 = 0 (selalu dimulai dari 0) U1 = 11
4. Dimensi Array (d)
Untuk deklarasi array: float H[6][2][6] maka :
Fungsi Pemetaan
z Row major order
Cara penyimpanan data dalam suatu bahasa pemrograman bahasa C/C++ dan Pascal menggunakan roe major order, sedangkan bahasa Fortran menggunakan column major order
z Virtual Origin /Virtual Base
Nilai kontanta C0 (lokasi komponen dengan
indeks 0).
Di dalam bahasa C/C++ nilai C0 = b, di dalam
bahasa Pascal nilai C0 dapat berbeda dengan
nilai b.
Rumus umum AMF
Addr(S[i1][i2]… [id] = c0 + c1 x i1 + …. + cd x id
Dengan :
cd = L
ct-1 = ( Ut – it + 1) x ct = (Ut + 1 ) x ct 1 < t < = d
Rumus perhitungan besarnya memori
yang digunakan oleh array
M = L x ( u1 + 1) x ( u2 + 1) x ….. X ( ud + 1)
Contoh perhitungan AMF:
1. Array 1- dimensi
Diketahui deklarasi array: floatq[6]; maka:
L = 4, karena tipe data float u1 = 5;
b = 500; dimisalkan komponen awal dimulai dari alamat 500.
Perhitungan : c1 = L = 4 c0 = b = 500 Addr(Q[i]) = c0 + c1 x i1 Addr(Q[3]) = c0 + c1 x i1 = 500 + 4 x 3 = 512 Addr(Q[5]) = c0 + c1 x i1 = 500 + 4 x 5 = 520
Mapping Tabel Array Q Indeks Address 0 500 1 504 2 508 3 512 4 516 5 520
Besarnya memori yang dibutuhkan oleh array Q
M = L x ( u1 + 1) = 4 x (5+1) = 24 byte
2.
Array 2-dimensiDiketahui deklarasi array:int R[4][5]; maka:
L = 2; karena tipe data = integer u1 = 3; u2 = 4
Perhitungan: c2 = L = 2 c1 = (U1 + 1 ) x c2 = (4 + 1 ) + 2 = 10 c0 = b = 300 Addr(P[i][j]) = c0 + c1 x i + c2 x j = 300 +10 x 40 +2 x 5
Bersama memori yang dibitukan oleh array P
M = L x ( u1 + 1) x ( u2 + 1) Latihan
1. Bila dideklarasikan :
int A[4][6];
Dimisalkan b =100, cari alamat dari A[0][0], A[2][3] dan A[3][5], kemudian hitung besarnya memori yang diperlukan oleh array A.
2. Bila dideklarasikan: Int B[4][6][5];
Dimisalkan b = 200, cari alamat dari B[0][0][0], B[2][3][2], B[1][5][4], kemudian hitung
besarnya memori yang diperlukan oleh array B