Dokumen tersebut membahas tentang fungsi rekursif, queue, dan stack. Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri dan berguna untuk pengurutan data dan perhitungan nilai faktorial. Queue adalah antrian dimana data pertama masuk akan keluar terlebih dahulu, seperti antrian printer. Stack adalah struktur data linier dimana penambahan dan penghapusan item hanya dapat dilakukan pada satu ujung (top) secara LIFO
2. • Fungsi rekursif --> suatu fungsi yang memanggil dirinya
sendiri
• Fungsi tersebut dipanggil di dalam tubuh fungsi itu sendiri
• Sangat berguna bila diimplementasikan untuk pekerjaan
pengurutan data atau menghitung nilai factorial suatu
bilangan.
4. • Queue = antrian
• Data yang pertama masuk dalam antrian, akan keluar
terlebih dahulu.
• Jenis-jenis Queue :
• Linear Queue
• Double Ended Queue (Dequeue)
5. • Waiting list – birokrasi.
• Simulasi sistem antrian.
• Antrian printer jobs.
• Antrian proses multitasking dalam CPU.
• Antrian playlist winamp.
6. • Ilustrasi Antrian Lurus
Q[10]
0 1 2
x x
3 4
x x
5 6 7 8 9
F R
3
F X
6
R
Keterangan :
F = Front (depan)
R = Rear (belakang)
F menunjuk pengantri paling depan, yaitu pengantri yg
siap dilayani.
R menunjuk pengantri paling belakang, yaitu pengantri yg
paling terakhir masuk.
7. • Prinsip /Konsep Proses :
• FIFO(First In First Out)
• FIFS (First In First Serve)
• Proses :
a. AWAL (Inisialisasi)
b. INSERT (Sisip, Masuk, Simpan, Tulis)
c. DELETE (Hapus, Keluar, Ambil/Dilayani)
d. RESET (Kembali ke AWAL)
9. • Periksa apakah Antrian BISA DIISI
if ( R < n – 1)
{
R = R + 1;
Q[R] = x;
}
else
cout<<“Antrian Penuh”;
10. • Periksa apakah Antrian ADA ISINYA
if ( F < R + 1)
{
x = Q[F];
F = F + 1;
if ((F=R+1) && (R=n-1))
{ F = 0;
R = -1; }
}
else
cout<<“Antrian Kosong”;
11. • Ilustrasi Deque (Antrian dengan Ujung Ganda)
Q[10]
0 1 2
x x
3 4
x x
5 6 7 8 9
L R
Keterangan :
L = Left (kiri)
R = Right (kanan)
L menunjuk pengantri yg terakhir masuk di sebelah kiri
dan siap dilayani.
R menunjuk pengantri yg terakhir masuk di sebelah
kanan dan siap dilayani.
Insert Kiri
Delete Kiri
Insert Kanan
Delete Kanan
12. • Prinsip /Konsep Proses :
• bukan FIFO, bukan juga LIFO, tergantung
kesempatan yang ada.
• Proses :
a. AWAL (Inisialisasi)
b. INSERT (Sisip, Masuk, Simpan, Tulis)
c. DELETE (Hapus, Keluar, Ambil/Dilayani)
14. • Periksa apakah Deque BISA DIISI DARI KIRI
void INSERT_KIRI()
{ if ( L > 0)
{
L = L - 1;
Q[L] = x;
}
else
cout<<“Antrian Kiri Penuh”;
}
15. • Periksa apakah Deque BISA DIISI DARI KANAN
void INSERT_KANAN()
{ if ( R < n - 1)
{
R = R + 1;
Q[R] = x;
}
else
cout<<“Antrian Kanan Penuh”;
}
16. • Periksa apakah Deque ADA ISINYA
void DELETE_KIRI()
{ if (L < R + 1)
{
x = Q[L];
L = L + 1;
}
else
cout<<“Antrian Kosong”;
}
17. • Periksa apakah Deque ADA ISINYA
void DELETE_KANAN()
{ if (L < R + 1)
{
x = Q[R];
R = R - 1;
}
else
cout<<“Antrian Kosong”;
}
18. • Kumpulan item yang teratur dimana item baru
akan diletakkan dan dikeluarkan dari satu ujung
yang sama, yaitu dari TOP sebuah stack.
• Struktur data linier dimana hanya bagian TOP-
nya saja yang bisa diakses.
• Bersifat LIFO = Last In First Out.
• Bisa diimplementasikan menggunakan array
atau Linked List.
20. • History pada web browser.
• Undo Log pada text editor.
• Pemrosesan struktur bersarang (nested) : loop, rekursi,
fungsi, dll.
• Algoritma back tracking – Artificial Intelegence
21. • Push : meletakkan sebuah item baru ke dalam stack.
• Pop : mengeluarkan sebuah item dari stack.
• Operasi lain : Is_Empty, Is_Full
Note : pop dan push dilakukan melalui ujung yang sama
(TOP)
23. #define maxsize 100
// mendefinisikan maks ukuran data
// dlm stack
typedef struct {
int top; // indeks TOP
charitems [ maxsize ] // array
} stack;
// nama tipe data baru yg dibuat
// adalah stack
31. • Jika sebuah linked list SELALU menambahkan node
baru dan menghapus node lama dari salah SATU
ujungnya saja (posisi Head ataukah Tail) STACK.
• TOP = head untuk single linked list.
• TOP = tail untuk double linked list.
• HOW?