1 / 16

LANDASAN TEORI

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)

keaira
Download Presentation

LANDASAN TEORI

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. LANDASAN TEORI STACK dan QUEUE by @Erna KumalasariNurnawati

  2. 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

  3. Ilustrasi Stack Urutan Perintah : • Buat_stack(stack) • Push(stack,A) • Push(stack,C) • Pop (stack, E) • Push(stack,G) - 65 by @Erna Kumalasari Nurnawati

  4. 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

  5. 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

  6. 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

  7. 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

  8. 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

  9. 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

  10. 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

  11. 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

  12. LANDASAN TEORI QUEUE by @Erna KumalasariNurnawati

  13. 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

  14. 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

  15. 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

  16. 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

More Related