170 likes | 459 Views
LANDASAN TEORI. STACK dan QUEUE. Stack. Definisi : Stack adalah koleksi dr obyek-obyek homogen dng sifat-sifat pengambilan & penambahan obyek melalui satu tempat yaitu Top of Stack (TOS) Operasi Pada Stack: Buat_stack(stack)
E N D
LANDASAN TEORI STACK dan QUEUE by @Erna KumalasariNurnawati
Stack • Definisi: Stack adalah koleksi dr obyek-obyek homogen dng sifat-sifat pengambilan & penambahan obyek melalui satu tempat yaitu Top of Stack (TOS) Operasi Pada Stack: • Buat_stack(stack) Mendeklarasikan stack yg kosong/mmenginisialisasi stack yg kosong • Stack_kosong(stack) bernilai Boolean Mencek apakah stack dalam keadaan kosong • Stack_penuh(stack) bernilai Boolean Mengecek apakah stack dalam keadaan penuh • Push(stack,IB) Menambah obyek baru (IB) pada stack pada posisi paling atas (TOP) • Pop(stack,infopop) Mengambil elemen obyek dari stack lalu disimpan dalam infopop - 64 by @Erna Kumalasari Nurnawati
Ilustrasi Stack Urutan Perintah : • Buat_stack(stack) • Push(stack,A) • Push(stack,C) • Pop (stack, E) • Push(stack,G) - 65 by @Erna Kumalasari Nurnawati
Ilustrasi: • Push(stack,A) Push(stack,C) Pop (stack, E) Push(stack,G) A C A C A G A TOS TOS TOS TOS E=C - 66 by @Erna Kumalasari Nurnawati
Implementasi Stack Menggunakan Array Contoh : • TOP = 5, maka isi stack sebenarnya adalah : • 60, 50, 15, 25, 30 • Operasi Push(stack,IB) : • Tambahkan nilai TOP • masukkan nilai IB pada posisi TOP • Operasi Pop(stack,IB) : • Ambil elemen pada posisi TOP • Turunkan nilai TOP Contoh: • Push(stack,20) • maka TOP=6, posisi 6 dari 70 berubah 20 • Isi stack menjadi : 20, 60, 50, 15, 25, 30 • Pop(stack,x) • Maka posisi 6 diambil dan TOP = 5 max 9 8 7 6 5 4 3 2 0 28 45 27 70 60 50 15 25 30 5 Menyimpan posisi TOP - 67 by @Erna Kumalasari Nurnawati
Implementasi Stack Menggunkan Pointer 1 Operasi Stack : Push Langkah-langkahnya : • Buat node baru diisi info baru • Node baru next menuju ke stack • Stack menunjuk node baru Pop • ambil elemen top simpan ke infopop • tunjuk top oleh temp • belokkan stack ke posisi sebelumnya • hapus stack • bebaskan memori IB NB 3 2 Stack infopop 1 2 temp Stack 3 4 dispose - 68 by @Erna Kumalasari Nurnawati
Contoh program program contoh_stack; uses wincrt; label baby; const maxstack=100; type s100=string[maxstack]; stack=record judul:array[1..maxstack] of string; ujung:0..maxstack; end; var vcd: stack; vcdbaru:string; pil:1..3; cetak:string; by @Erna Kumalasari Nurnawati
Contoh program (lanjutan) procedure push(var vcd:stack;baru:string); begin if(vcd.ujung=maxstack) then writeln('stack penuh') else begin vcd.ujung:=vcd.ujung+1; vcd.judul[vcd.ujung]:=baru; end; end; by @Erna Kumalasari Nurnawati
Contoh program (lanjutan) function pop(var vcd:stack):string; begin if(vcd.ujung=0) then writeln('stack kosong') else begin pop:=vcd.judul[vcd.ujung]; vcd.ujung:=vcd.ujung-1; end; end; by @Erna Kumalasari Nurnawati
Contoh program (lanjutan) begin baby: writeln('PROGRAM STACK'); writeln('PILIHAN'); writeln('1. TAMBAH DATA (PUSH)'); writeln('2. AMBIL DATA (POP)'); writeln('3. KELUAR'); writeln('pilih(1..3)'); write('masukkan pilihan anda : ');readln(pil); case pil of 1:begin writeln('masukkan vcd baru'); write('judul baru : ');readln(vcdbaru); by @Erna Kumalasari Nurnawati
Contoh program (lanjutan) push(vcd,vcdbaru); writeln('vcd baru yang ada di stack sekarang ada ',vcd.ujung,' buah'); readln; end; 2:begin writeln('mengambil vcd dari stack'); writeln('vcd yang diambil adalah ',pop(vcd)); writeln('vcd yang ada di stack sekarang ada ',vcd.ujung,' buah'); readln; end; 3:halt; end; write(#7); goto baby; end. by @Erna Kumalasari Nurnawati
LANDASAN TEORI QUEUE by @Erna KumalasariNurnawati
Queue Definisi: Adalah struktur data dengan operasi penambahan (enqueue) dan pengambilan (dequeue) melalui 2 tempat yang berbeda(belakang dan depan) Operasi Pada Queue: • Buat_queue Mendeklarasikan stack yg kosong/mmenginisialisasi stack yg kosong • Queue_kosong Mencek apakah queue dalam keadaan kosong • Queue_penuh Mencek apakah queue dalam keadaan penuh • Enqueue Menambah elemen pada posisi paling belakang • Dequeue Mengeluarkan elemen pada posisi paling depan by @Erna Kumalasari Nurnawati
Implementasi Queue Menggunakan Array 1 2 3 4 5 6 7 8 9 10 A C E G I KMOQ S • Depan : selalu sama dengan 1 • Belakang : bisa berapa saja • Contoh : bila belakang = 2, maka isi queue : A, C • Bila belakang = 0, maka isi queue kosong • Enqueue(queue,IB) • naikkan nilai belakang • masukkan info baru (IB) • Dequeue(queue,Infodeq) • ambil elemen paling depan masukkan di infodeq • geser elemen ke kiri semua • turunkan nilai belakang by @Erna Kumalasari Nurnawati
Implementasi Queue Menggunakan Array Deklarasi: Const nmax = 100 Type typeinfo = ………; Typearray = array[1..nmax] of typeinfo Typequeue = record Elemen : typearray; Belakang : integer; End; Var queue : typequeue; Procedure Enqueue: Procedure enqueue(var queue : typequeue; IB : typeinfo); Begin If not(queuepenuh(queue)) then begin Queue.belakang := queue.belakang + 1; Queue.elemen[queue.belakang] := IB; End; End; by @Erna Kumalasari Nurnawati
Implementasi Queue Menggunakan Array Procedure Dequeue: Procedure dequeue(var queue : typequeue; var infodeq : typeinfo); Var I : integer; Begin If not(queuekosong(queue)) then begin Infodeq := queue.elemen[1]; for I:=1 to (queue.belakang – 1) do Queue.elemen[I] := queue.elemen[I + 1]; Queue. belakang := queue.belakang - 1; End; End; Kelemahan: • setiap ada operasi dequeue semua elemen harus digeser ke kiri sehingga membutuhkan waktu yang lama. Ini dapat diatasi dengan queue melingkar by @Erna Kumalasari Nurnawati