SlideShare une entreprise Scribd logo
1  sur  33
• 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.
#include<iostream.h>
#include<conio.h>
long factorial (long a)
{
if (a>1)
return (a* factorial (a-1));
else
return (1);
}
int main()
{
long l;
cout<<”tuliskan bilangan : ”;
cin>>l;
cout<<”!”<<l<<” = “<<factorial(l);
return 0;
}
• Queue = antrian
• Data yang pertama masuk dalam antrian, akan keluar
terlebih dahulu.
• Jenis-jenis Queue :
• Linear Queue
• Double Ended Queue (Dequeue)
• Waiting list – birokrasi.
• Simulasi sistem antrian.
• Antrian printer jobs.
• Antrian proses multitasking dalam CPU.
• Antrian playlist winamp.
• 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.
• 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)
Kondisi Antrian Ciri
a.
b.
c.
d.
e.
KOSONG
PENUH
BISA DIISI
ADA ISINYA
PERLU DIRESET
F = R + 1 dimana saja
R = n – 1
R < n – 1
F < R + 1
F = R + 1 dan R = n - 1
• Periksa apakah Antrian BISA DIISI
if ( R < n – 1)
{
R = R + 1;
Q[R] = x;
}
else
cout<<“Antrian Penuh”;
• 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”;
• 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
• 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)
Kondisi Antrian Ciri
a.
b.
c.
d.
e.
f.
KOSONG
PENUH KIRI
PENUH KANAN
BISA DIISI DARI KIRI
BISA DIISI DARI KANAN
ADA ISINYA
L = R + 1 dimana saja
L = 0
R = n – 1
L > 0
R < n – 1
L < R + 1
• Periksa apakah Deque BISA DIISI DARI KIRI
void INSERT_KIRI()
{ if ( L > 0)
{
L = L - 1;
Q[L] = x;
}
else
cout<<“Antrian Kiri Penuh”;
}
• 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”;
}
• Periksa apakah Deque ADA ISINYA
void DELETE_KIRI()
{ if (L < R + 1)
{
x = Q[L];
L = L + 1;
}
else
cout<<“Antrian Kosong”;
}
• Periksa apakah Deque ADA ISINYA
void DELETE_KANAN()
{ if (L < R + 1)
{
x = Q[R];
R = R - 1;
}
else
cout<<“Antrian Kosong”;
}
• 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.
Last In First Out
• History pada web browser.
• Undo Log pada text editor.
• Pemrosesan struktur bersarang (nested) : loop, rekursi,
fungsi, dll.
• Algoritma back tracking – Artificial Intelegence
• 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)
X
A
E
X
A
B
X
A
TOP
remove:
“POP”
TOP
insert ‘B’:
PUSH ‘B’
TOP
D
K
D
K
P
D
K
P
O
D
K
P
D
K
D D
T
D
T
R
D
T
R
W
D
T
R
W
Y
a b c d e f g h i j
#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
• void initialize ( stack *s)
• void pop ( stack *s, char *x )
• void push ( stack *s, char x )
• void show ( stack *s )
void initialize ( stack *s)
// operasi initialize dg parameter
// s bertipe pointer stack
{ s -> top = -1;
// top = -1  stack dlm kondisi empty
}
void push ( stack *s, char x )
{
if (s->top >= (maxsize-1)) //stack is full
printf("nERROR: the stack is full!");
else {
s->top = s->top + 1;
s->items [ s->top ] = x;
printf("nPUSH SUCCEED");
}
}
void pop ( stack *s, char *x )
{
if (s->top < 0) // stack is empty
printf("nERROR: the stack is empty!");
else {
*x = (s->items [ s->top ]);
s->top = s->top - 1;
printf("nPOP SUCCEED");
}
}
void show( stack *s )
{
printf("nISI STACK :n");
for(int i=s->top; i>=0; i--)
printf("t%cn", s->items[i]);
printf("n");
}
void main()
{
stack *my_stack, s;
char item, *x;
my_stack = &s;
x = &item;
initialize(my_stack);
push(my_stack, 'A'); push(my_stack, 'R');
push(my_stack, 'I'); push(my_stack, 'F');
show(my_stack);
pop(my_stack, x); pop(my_stack, x);
show(my_stack);
pop(my_stack, x); pop(my_stack, x);
show(my_stack);
}
• 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?
Fungsi rekursif, queue, stack
Fungsi rekursif, queue, stack

Contenu connexe

Tendances

Database minimarket-Garnis Q
Database minimarket-Garnis QDatabase minimarket-Garnis Q
Database minimarket-Garnis Q
G Nis
 
Kisi kisi uas struktur data
Kisi kisi uas struktur dataKisi kisi uas struktur data
Kisi kisi uas struktur data
Dwi Mardianti
 
Program Pengurutan (Sorting) dan Pencarian (Searching) Data
Program Pengurutan  (Sorting) dan Pencarian  (Searching) DataProgram Pengurutan  (Sorting) dan Pencarian  (Searching) Data
Program Pengurutan (Sorting) dan Pencarian (Searching) Data
Simon Patabang
 

Tendances (20)

Contoh program buble sort dalam pascal
Contoh program buble sort dalam pascalContoh program buble sort dalam pascal
Contoh program buble sort dalam pascal
 
Sorting ppt
Sorting ppt Sorting ppt
Sorting ppt
 
Laporan praktikum modul 7 (dml)
Laporan praktikum modul 7 (dml)Laporan praktikum modul 7 (dml)
Laporan praktikum modul 7 (dml)
 
Pertemuan 1 Data dan Struktur Data
Pertemuan 1 Data dan Struktur DataPertemuan 1 Data dan Struktur Data
Pertemuan 1 Data dan Struktur Data
 
Database minimarket-Garnis Q
Database minimarket-Garnis QDatabase minimarket-Garnis Q
Database minimarket-Garnis Q
 
Materi 3 Finite State Automata
Materi 3   Finite State AutomataMateri 3   Finite State Automata
Materi 3 Finite State Automata
 
Kisi kisi uas struktur data
Kisi kisi uas struktur dataKisi kisi uas struktur data
Kisi kisi uas struktur data
 
Pemodelan sistem (DFD)
Pemodelan sistem (DFD)Pemodelan sistem (DFD)
Pemodelan sistem (DFD)
 
Jawaban Struktur data soal-latihan
Jawaban Struktur data soal-latihanJawaban Struktur data soal-latihan
Jawaban Struktur data soal-latihan
 
teori Struktur data full
teori Struktur data fullteori Struktur data full
teori Struktur data full
 
Materi Struktur Data Tree
Materi Struktur Data TreeMateri Struktur Data Tree
Materi Struktur Data Tree
 
Normalisasi slip gaji
Normalisasi slip gajiNormalisasi slip gaji
Normalisasi slip gaji
 
4.1 Operasi Dasar Singly Linked List 1 (primitive list)
4.1 Operasi Dasar Singly Linked List  1 (primitive list)4.1 Operasi Dasar Singly Linked List  1 (primitive list)
4.1 Operasi Dasar Singly Linked List 1 (primitive list)
 
Latihan soal struktur data
Latihan soal struktur dataLatihan soal struktur data
Latihan soal struktur data
 
Queue
QueueQueue
Queue
 
Program Pengurutan (Sorting) dan Pencarian (Searching) Data
Program Pengurutan  (Sorting) dan Pencarian  (Searching) DataProgram Pengurutan  (Sorting) dan Pencarian  (Searching) Data
Program Pengurutan (Sorting) dan Pencarian (Searching) Data
 
Materi : Struktur Data (2 Array)
Materi : Struktur Data (2 Array)Materi : Struktur Data (2 Array)
Materi : Struktur Data (2 Array)
 
Laporan tugas struktur data
Laporan tugas struktur dataLaporan tugas struktur data
Laporan tugas struktur data
 
5. Doubly Linked List (Struktur Data)
5. Doubly Linked List (Struktur Data)5. Doubly Linked List (Struktur Data)
5. Doubly Linked List (Struktur Data)
 
Implementasi queue
Implementasi queueImplementasi queue
Implementasi queue
 

Similaire à Fungsi rekursif, queue, stack

Bab 4 stack (tumpukan)
Bab 4 stack (tumpukan)Bab 4 stack (tumpukan)
Bab 4 stack (tumpukan)
Fahuda E
 
Function
FunctionFunction
Function
windi1
 

Similaire à Fungsi rekursif, queue, stack (20)

TI-struktur_data-stack_n_queue
TI-struktur_data-stack_n_queueTI-struktur_data-stack_n_queue
TI-struktur_data-stack_n_queue
 
Bab 3 stack (tumpukan)
Bab 3 stack (tumpukan)Bab 3 stack (tumpukan)
Bab 3 stack (tumpukan)
 
Slide minggu 2 pertemuan 2 (struktur data1)
Slide minggu 2 pertemuan 2 (struktur data1)Slide minggu 2 pertemuan 2 (struktur data1)
Slide minggu 2 pertemuan 2 (struktur data1)
 
Stack tumpukan
Stack tumpukan Stack tumpukan
Stack tumpukan
 
Stack tumpukan
Stack tumpukan Stack tumpukan
Stack tumpukan
 
Ketoprak_PPT ADT Stack dan Queue.pptx
Ketoprak_PPT ADT Stack dan Queue.pptxKetoprak_PPT ADT Stack dan Queue.pptx
Ketoprak_PPT ADT Stack dan Queue.pptx
 
Algorithms and Data Structures
 Algorithms and Data Structures Algorithms and Data Structures
Algorithms and Data Structures
 
Resume praktikum 6 stack
Resume praktikum 6 stackResume praktikum 6 stack
Resume praktikum 6 stack
 
Algoritma dan Struktur Data - Antrian
Algoritma dan Struktur Data - AntrianAlgoritma dan Struktur Data - Antrian
Algoritma dan Struktur Data - Antrian
 
Algoritma dan Struktur Data - Queue
Algoritma dan Struktur Data - QueueAlgoritma dan Struktur Data - Queue
Algoritma dan Struktur Data - Queue
 
Algoritma dan Struktur Data - antrian
Algoritma dan Struktur Data - antrianAlgoritma dan Struktur Data - antrian
Algoritma dan Struktur Data - antrian
 
Bab 4 stack (tumpukan)
Bab 4 stack (tumpukan)Bab 4 stack (tumpukan)
Bab 4 stack (tumpukan)
 
Stack atau tumpukan
Stack atau tumpukanStack atau tumpukan
Stack atau tumpukan
 
5 STACK
5 STACK5 STACK
5 STACK
 
Bab viii stack
Bab viii   stackBab viii   stack
Bab viii stack
 
Queue
QueueQueue
Queue
 
2894065
28940652894065
2894065
 
Stack_Queue.pdf
Stack_Queue.pdfStack_Queue.pdf
Stack_Queue.pdf
 
Pertemuan II Function
Pertemuan II FunctionPertemuan II Function
Pertemuan II Function
 
Function
FunctionFunction
Function
 

Plus de Icha Dicaprio

Plus de Icha Dicaprio (8)

Oop
OopOop
Oop
 
Efisiensi algoritma
Efisiensi algoritmaEfisiensi algoritma
Efisiensi algoritma
 
Pengenalan algoritma
Pengenalan algoritmaPengenalan algoritma
Pengenalan algoritma
 
Algoritma Matriks
Algoritma MatriksAlgoritma Matriks
Algoritma Matriks
 
Array satu-dimensi
Array satu-dimensiArray satu-dimensi
Array satu-dimensi
 
Array
ArrayArray
Array
 
Struktur Kontrol
Struktur KontrolStruktur Kontrol
Struktur Kontrol
 
4 variabel konstanta-tipe-data
4 variabel konstanta-tipe-data4 variabel konstanta-tipe-data
4 variabel konstanta-tipe-data
 

Fungsi rekursif, queue, stack

  • 1.
  • 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.
  • 3. #include<iostream.h> #include<conio.h> long factorial (long a) { if (a>1) return (a* factorial (a-1)); else return (1); } int main() { long l; cout<<”tuliskan bilangan : ”; cin>>l; cout<<”!”<<l<<” = “<<factorial(l); return 0; }
  • 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)
  • 8. Kondisi Antrian Ciri a. b. c. d. e. KOSONG PENUH BISA DIISI ADA ISINYA PERLU DIRESET F = R + 1 dimana saja R = n – 1 R < n – 1 F < R + 1 F = R + 1 dan R = n - 1
  • 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)
  • 13. Kondisi Antrian Ciri a. b. c. d. e. f. KOSONG PENUH KIRI PENUH KANAN BISA DIISI DARI KIRI BISA DIISI DARI KANAN ADA ISINYA L = R + 1 dimana saja L = 0 R = n – 1 L > 0 R < n – 1 L < R + 1
  • 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
  • 24. • void initialize ( stack *s) • void pop ( stack *s, char *x ) • void push ( stack *s, char x ) • void show ( stack *s )
  • 25. void initialize ( stack *s) // operasi initialize dg parameter // s bertipe pointer stack { s -> top = -1; // top = -1  stack dlm kondisi empty }
  • 26. void push ( stack *s, char x ) { if (s->top >= (maxsize-1)) //stack is full printf("nERROR: the stack is full!"); else { s->top = s->top + 1; s->items [ s->top ] = x; printf("nPUSH SUCCEED"); } }
  • 27. void pop ( stack *s, char *x ) { if (s->top < 0) // stack is empty printf("nERROR: the stack is empty!"); else { *x = (s->items [ s->top ]); s->top = s->top - 1; printf("nPOP SUCCEED"); } }
  • 28. void show( stack *s ) { printf("nISI STACK :n"); for(int i=s->top; i>=0; i--) printf("t%cn", s->items[i]); printf("n"); }
  • 29. void main() { stack *my_stack, s; char item, *x; my_stack = &s; x = &item; initialize(my_stack); push(my_stack, 'A'); push(my_stack, 'R'); push(my_stack, 'I'); push(my_stack, 'F'); show(my_stack); pop(my_stack, x); pop(my_stack, x); show(my_stack); pop(my_stack, x); pop(my_stack, x); show(my_stack); }
  • 30.
  • 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?