Algoritma Dan Struktur Data II

advertisement
Algoritma Dan Struktur Data II
Array dan Matriks
Apa itu Struktur Data ?
PROGRAM
ALGORITMA
STRUKTUR
DATA
Algoritma …..
deskripsi langkah-langkah
penyelesaian masalah
yang tersusun secara logis
1. ditulis dengan notasi khusus
2. notasi mudah dimengerti
3. notasi dapat diterjemahkan menjadi
sintaks suatu bahasa pemrograman
Struktur Data …..
model logika/matematik
yang secara khusus
mengorganisasi data
Contoh Struktur Data …..
Array A satu dimensi :
8 indeks (1 s/d 8) dan data 1, 7, 18 dst.
1
7
18
03
69
24
08
70
1
2
3
4
5
6
7
8
Contoh Struktur Data …..
Ar ray B dua di mensi (matr iks) :
- j uml ah bari s 2, kol om 3
- d ata 18, 03, 69, 24, 08, 70.
1
2
3
1
18
03
69
2
24
08
70
Contoh Struktur Data …..
List Berkait / Senarai
Contoh Struktur Data …..
Tumpukan dengan tiga data
( 18, 03, dan 69 yang mer upakan
posisi terakhir / TOP )
69
03
18
<< TOP
Contoh Struktur Data …..
Pohon dengan akar A
A
B
C
D
E
F
Struktur Data …..
Tempat
Penyimpanan Data
Operasi
terhadap data
•
•
Traversal (Traversing) : mengunjungi setiap elemen SD
Pencarian (Searching) : menemukan elemen/lokasi pada
SD
• Penyisipan (Inserting) : menambah elemen baru pada SD
•
Penghapusan (Deleting) : menghapus elemen dari SD
Kita lanjutkan
untuk yang satu ini …..
Struktur Data :
Array / Larik
Tujuan
Membahas struktur data yang paling sederhana dan
mudah pengoperasiannya, yaitu array / larik.
Definisi
struktur data yang mengacu pada sekumpulan
elemen yang diakses melalui indeks
KELEBIHAN & KEKURANGAN
Array / Larik
• KELEBIHAN
- Struktur Data paling mudah
- Memori ekonomis, bila semua elemen terisi
- Waktu akses sama ke setiap elemen
KEKURANGAN
- Boros memori jika banyak elemen yang tidak
digunakan
- Struktur Data Statis
CONTOH PROSES
Array / Larik
ALGORITMA
For Indeks 1 to N do
PROSES LARIK
Endfor
Mengisi
elemen larik dengan 0
(inisialisasi)
Mengisi
elemen larik dari piranti
masukan
Mencetak
keluaran
elemen larik ke piranti
INISIALISASI
Array / Larik
ALGORITMA
For Indeks 1 to 8 do
A[Indeks] = 0
Endfor
0
0
0
0
0
0
0
0
INPUT ELEMEN
Array / Larik
ALGORITMA
For Indeks 1 to 8 do
Input A[Indeks]
Endfor
1
3
5
7
2
9
?1
?3
?5
4
7
CETAK ELEMEN
Array / Larik
ALGORITMA
For Indeks 1 to 8 do
Print A[Indeks]
Endfor
2
7
4
9
7
5
13
1
3
5
7
2
9
4
7
Array vs Struct
•
•
Array : penampung sejumlah data sejenis (yang
memiliki type data yang sama) dengan
menggunakan satu identifier
Elemen array dapat diakses dengan
menggunakan index, dari nol sampai n-1 (n:
jumlah elemen array)
Contoh :
int x[5];
printf(“%d”,x[3]);
Array vs Struct
•
•
Struct: struktur data yang menggabungkan
beberapa data dengan tipe yang berbeda, tetapi
berkaitan
Elemen struct dapat diakses dengan
menggunakan dot operator dan arrow operator.
Struct
Gabungan beberapa variable dengan tipe yang
berbeda
学籍番号
学籍番号
名前学籍番号
名前
生年月日
名前
生年月日
nama
体重生年月日
体重
Nilai math
身長体重 Nilai biology
身長
身長 Nilai geography
Nilai English
Nilai Bhs.Indonesia
Nilai rata-rata
struct NILAI {
char nama[100];
float math;
float biology;
float geography;
float english;
float bi;
float ratarata;
};
struct NILAI p[10];
Deklarasi struct
Gabungan beberapa variable dengan tipe yang
berbeda
Struct
学籍番号
学籍番号
名前学籍番号
名前学籍番号
生年月日
名前学籍番号
生年月日
名前nama
体重生年月日
名前
体重生年月日
Nilai math
身長体重 Nilai biology
生年月日
身長体重
Nilai geography
身長体重
身長Nilai English
身長
Nilai Bhs.Indonesia
Nilai rata-rata
struct NILAI {
char nama[100];
float math;
float biology;
float geography;
float english;
float bi;
float ratarata;
} p[10];
Beberapa Jenis Struktur Data
1.
Array
1. Linear List
2. Stack
3. Queue
2. List
1. Connected List
2. Circular List
3. Doubly-linked List
4. Multi list structure
3. Tree Structure
1. Apa ?
2. Bagaimana cara implementasinya ?
Linear List
Apakah Linear List itu ?
• Sekumpulan elemen yang diatur secara terurut
x[1], x[2],L , x[k − 1], x[k ], x[k + 1], L , x[n]
• Linear List tidak sama dengan Connected-List
Operasi pada Linear List
No.
Operasi
1
Menambahkan sebuah elemen sebelum elemen ke-k
2
Menghapus elemen ke-k
3
Membaca/menulis isi elemen ke-k
4
Mencari elemen dengan key tertentu
5
Menggabungkan beberapa list menjadi satu
6
Memecah sebuah list ke beberapa buah
7
Mengcopy sebuah list
8
Menghitung banyaknya elemen dalam sebuah list
List, Stack & Queue
• Tidak semua operasi list diperlukan pada setiap program
▫ Penentuan struktur data didasarkan pada operasi yang
diperlukan saja agar bisa berjalan dengan efisien
• Pada sebuah Linear List, penyisipan dan penghapusan
elemen dapat dijalankan di sebarang posisi
• Bentuk khusus linear list:
Penambahan elemen dan penghapusannya
dilakukan di posisi terdepan atau
posisi terbelakang saja
Stack dan Queue juga merupakan salah satu jenis list
Stack
Queue
List, Stack & Queue
• Pada sebuah Linear List, penyisipan dan penghapusan
elemen dapat dijalankan di sebarang posisi
• Penambahan dan penghapusan elemen pada stack/queue
dilakukan di posisi terdepan atau posisi terbelakang saja
List
1
2
3
4
5
6
1
2
3
4
5
6
1
2
3
4
5
6
Stack
Queue
Stack
Apakah Stack itu ?
Apakah Stack itu ?
• Penambahan dan penghapusan elemen dilakukan pada
elemen list yang terletak di paling depan
• Yang dihapus adalah elemen yang paling terakhir
ditambahkan
• Nama lain: LIFO (Last In First Out)
• Operasi PUSH : Menambahkan elemen pada sebuah
stack
PUSH
1
top== bottom
Apakah Stack itu ?
• Penambahan dan penghapusan elemen dilakukan pada
elemen list yang terletak di paling depan
• Yang dihapus adalah elemen yang paling terakhir
ditambahkan
• Nama lain: LIFO (Last In First Out)
• Operasi PUSH : Menambahkan elemen pada sebuah
stack
PUSH
2
1
top
bottom
Apakah Stack itu ?
• Penambahan dan penghapusan elemen dilakukan pada
elemen list yang terletak di paling depan
• Yang dihapus adalah elemen yang paling terakhir
ditambahkan
• Nama lain: LIFO (Last In First Out)
• Operasi PUSH : Menambahkan elemen pada sebuah
stack
3
top
2
PUSH
1
bottom
Apakah Stack itu ?
• Penambahan dan penghapusan elemen dilakukan pada
elemen list yang terletak di paling depan
• Yang dihapus adalah elemen yang paling terakhir
ditambahkan
• Nama lain: LIFO (Last In First Out)
• Operasi PUSH : Menambahkan elemen pada sebuah
stack
4
top
3
PUSH
2
1
bottom
Apakah Stack itu ?
• Penambahan dan penghapusan elemen dilakukan pada
elemen list yang terletak di paling depan
• Yang dihapus adalah elemen yang paling terakhir
ditambahkan
• Nama lain: LIFO (Last In First Out)
• Operasi PUSH : Menambahkan elemen pada sebuah
stack
top
5
PUSH
4
3
2
1
bottom
Apakah Stack itu ?
• Penambahan dan penghapusan elemen dilakukan pada
elemen list yang terletak di paling depan
• Yang dihapus adalah elemen yang paling terakhir
ditambahkan
• Nama lain: LIFO (Last In First Out)
• Operasi PUSH : Menambahkan elemen pada sebuah
stack
top
6
5
PUSH
4
3
2
1
bottom
Apakah Stack itu ?
• Penambahan dan penghapusan elemen dilakukan pada
elemen list yang terletak di paling depan
• Yang dihapus adalah elemen yang paling terakhir
ditambahkan
• Nama lain: LIFO (Last In First Out)
• Operasi POP : Menghapus sebuah elemen dari sebuah
stack
top
6
5
POP
4
3
2
1
bottom
Apakah Stack itu ?
• Penambahan dan penghapusan elemen dilakukan pada
elemen list yang terletak di paling depan
• Yang dihapus adalah elemen yang paling terakhir
ditambahkan
• Nama lain: LIFO (Last In First Out)
• Operasi POP : Menghapus sebuah elemen dari sebuah
stack
top
5
POP
4
3
2
1
bottom
Apakah Stack itu ?
• Penambahan dan penghapusan elemen dilakukan pada
elemen list yang terletak di paling depan
• Yang dihapus adalah elemen yang paling terakhir
ditambahkan
• Nama lain: LIFO (Last In First Out)
• Operasi POP : Menghapus sebuah elemen dari sebuah
stack
POP
4
top
3
2
1
bottom
Apakah Stack itu ?
• Penambahan dan penghapusan elemen dilakukan pada
elemen list yang terletak di paling depan
• Yang dihapus adalah elemen yang paling terakhir
ditambahkan
• Nama lain: LIFO (Last In First Out)
• Operasi POP : Menghapus sebuah elemen dari sebuah
stack
3
POP
top
2
1
bottom
Apakah Stack itu ?
• Penambahan dan penghapusan elemen dilakukan pada
elemen list yang terletak di paling depan
• Yang dihapus adalah elemen yang paling terakhir
ditambahkan
• Nama lain
lain: LIFO (Last In First Out)
• Operasi POP : Menghapus sebuah elemen dari sebuah
stack
POP
2
1
top
bottom
Apakah Stack itu ?
• Penambahan dan penghapusan elemen dilakukan pada
elemen list yang terletak di paling depan
• Yang dihapus adalah elemen yang paling terakhir
ditambahkan
• Nama lain: LIFO (Last In First Out)
• Operasi POP : Menghapus sebuah elemen dari sebuah
stack
POP
1
top==bottom
Apakah Stack itu ?
PUSH
dan
POP
Stack Overflow & Stack Underflow
• Stack Overflow
Menambahkan data pada sebuah stack yang telah penuh
• Stack Underflow
Menghapus data dari sebuah stack yang sudah kosong
Apakah Queue itu ?
Apakah Queue itu ?
• Penambahan data dilakukan pada sebuah ujung sebuah
list, sedangkan penghapusan data dilakukan pada ujung
yang lain
• Data yang dihapus adalah data yang paling awal
ditambahkan
• Nama lain: FIFO (First In First Out)
• Operasi ENQUEUE: menambahkan data pada sebuah
list
ENQUEUE
1
front==rear
Apakah Queue itu ?
• Penambahan data dilakukan pada sebuah ujung sebuah
list, sedangkan penghapusan data dilakukan pada ujung
yang lain
• Data yang dihapus adalah data yang paling awal
ditambahkan
• Nama lain: FIFO (First In First Out)
• Operasi ENQUEUE: menambahkan data pada sebuah
list
1
2
ENQUEUE
front
rear
Apakah Queue itu ?
• Penambahan data dilakukan pada sebuah ujung sebuah
list, sedangkan penghapusan data dilakukan pada ujung
yang lain
• Data yang dihapus adalah data yang paling awal
ditambahkan
• Nama lain: FIFO (First In First Out)
• Operasi ENQUEUE: menambahkan data pada sebuah
list
ENQUEUE
1
front
2
3
rear
Apakah Queue itu ?
• Penambahan data dilakukan pada sebuah ujung sebuah
list, sedangkan penghapusan data dilakukan pada ujung
yang lain
• Data yang dihapus adalah data yang paling awal
ditambahkan
• Nama lain: FIFO (First In First Out)
• Operasi ENQUEUE: menambahkan data pada sebuah
list
ENQUEUE
1
front
2
3
4
rear
Apakah Queue itu ?
• Penambahan data dilakukan pada sebuah ujung sebuah
list, sedangkan penghapusan data dilakukan pada ujung
yang lain
• Data yang dihapus adalah data yang paling awal
ditambahkan
• Nama lain: FIFO (First In First Out)
• Operasi ENQUEUE: menambahkan data pada sebuah
list
ENQUEUE
1
front
2
3
4
5
rear
Apakah Queue itu ?
• Penambahan data dilakukan pada sebuah ujung sebuah
list, sedangkan penghapusan data dilakukan pada ujung
yang lain
• Data yang dihapus adalah data yang paling awal
ditambahkan
• Nama lain: FIFO (First In First Out)
• Operasi ENQUEUE: menambahkan data pada sebuah
list
ENQUEUE
1
front
2
3
4
5
6
rear
Apakah Queue itu ?
• Penambahan data dilakukan pada sebuah ujung sebuah
list, sedangkan penghapusan data dilakukan pada ujung
yang lain
• Data yang dihapus adalah data yang paling awal
ditambahkan
• Nama lain: FIFO (First In First Out)
• Operasi DEQUEUE: menghapus data pada sebuah list
DEQUEUE
1
front
2
3
4
5
6
rear
Apakah Queue itu ?
• Penambahan data dilakukan pada sebuah ujung sebuah
list, sedangkan penghapusan data dilakukan pada ujung
yang lain
• Data yang dihapus adalah data yang paling awal
ditambahkan
• Nama lain: FIFO (First In First Out)
• Operasi DEQUEUE: menghapus data pada sebuah list
DEQUEUE
2
front
3
4
5
6
rear
Apakah Queue itu ?
• Penambahan data dilakukan pada sebuah ujung sebuah
list, sedangkan penghapusan data dilakukan pada ujung
yang lain
• Data yang dihapus adalah data yang paling awal
ditambahkan
• Nama lain: FIFO (First In First Out)
• Operasi DEQUEUE: menghapus data pada sebuah list
DEQUEUE
3
front
4
5
6
rear
Apakah Queue itu ?
• Penambahan data dilakukan pada sebuah ujung sebuah
list, sedangkan penghapusan data dilakukan pada ujung
yang lain
• Data yang dihapus adalah data yang paling awal
ditambahkan
• Nama lain: FIFO (First In First Out)
• Operasi DEQUEUE: menghapus data pada sebuah list
DEQUEUE
4
front
5
6
rear
Apakah Queue itu ?
• Penambahan data dilakukan pada sebuah ujung sebuah
list, sedangkan penghapusan data dilakukan pada ujung
yang lain
• Data yang dihapus adalah data yang paling awal
ditambahkan
• Nama lain: FIFO (First In First Out)
• Operasi DEQUEUE: menghapus data pada sebuah list
DEQUEUE
5
front
6
rear
Apakah Queue itu ?
• Penambahan data dilakukan pada sebuah ujung sebuah
list, sedangkan penghapusan data dilakukan pada ujung
yang lain
• Data yang dihapus adalah data yang paling awal
ditambahkan
• Nama lain: FIFO (First In First Out)
• Operasi DEQUEUE: menghapus data pada sebuah list
DEQUEUE
6
front==rear
Animasi Queue
ENQUEUE dan DEQUEUE
• Gambarkan kondisi stack setelah dilakukan operasi
berikut:
Latihan 1
push(10);
push(2);
pop();
push(20);
pop();
push(15);
push(5);
2
10
10
• Gambarkan kondisi queue setelah dilakukan operasi
berikut:
Latihan 2
enqueue(10);
enqueue(32);
10
enqueue(5);
dequeue();
enqueue(10);
dequeue();
dequeue();
10
32
Download