Download - Bab 8 Stack Dan Queue
![Page 1: Bab 8 Stack Dan Queue](https://reader036.vdokumen.com/reader036/viewer/2022082212/55cf8f5c550346703b9b8ff4/html5/thumbnails/1.jpg)
STACK
Kuliah Struktur Data Pascal
![Page 2: Bab 8 Stack Dan Queue](https://reader036.vdokumen.com/reader036/viewer/2022082212/55cf8f5c550346703b9b8ff4/html5/thumbnails/2.jpg)
Definisi
• Adalah tumpulan data yang seolah-olah ada data di atas data lain.
• Suatu metode untuk Input dan hapus di dalam memori komputer.
• Konsep utama dalam STACK adalah LIFO ( Last In First Out ).
• Contoh:5.Guntur,4.Aditya,3.Tyas,2.Hendra,1.Dyah
• Data nomor 1 datang/masuk duluan, data nomor 5 yang paling atas yang keluar terlebih dahulu.
![Page 3: Bab 8 Stack Dan Queue](https://reader036.vdokumen.com/reader036/viewer/2022082212/55cf8f5c550346703b9b8ff4/html5/thumbnails/3.jpg)
Arus Data5 Guntur
12
4 Aditya
24
3 Tyas
14
2 Hendra
15
1 Dyah
25
MASUK KELUAR
![Page 4: Bab 8 Stack Dan Queue](https://reader036.vdokumen.com/reader036/viewer/2022082212/55cf8f5c550346703b9b8ff4/html5/thumbnails/4.jpg)
Algoritma
Input/tambah data
Jika ada input maka no stack/no tumpukan yang semula 0 akan tambah 1 demi 1 sampai maksimal tumpukan.
Pengambilan data
Jika ada pengambilan data maka data dipindahkan di variabel lain contohnya temp. Dan posisi tumpukannya yang semula maksimal akan berkurang 1 demi 1 sampai posisi 0 kembali.
![Page 5: Bab 8 Stack Dan Queue](https://reader036.vdokumen.com/reader036/viewer/2022082212/55cf8f5c550346703b9b8ff4/html5/thumbnails/5.jpg)
Begin
top:=0;
For i:=1 to maks do
Begin
Writeln('masukkan nama ke', ' ',i,' ','='); readln(stack[i]);
top:=top+1;
End;
writeln('posisi tumpukan=',top);
Writeln('pengambilan data');
writeln('berapa data yang akan diambil?');readln(n);
if n<4 then
begin
For i:=1 to maks do
Begin
Elemen:=stack[top];
top:=top - 1;
End;
end;
Writeln('data elemen sekarang=',elemen);
writeln('posisi tumpukan=',top); Readln;
End.
CONTOH PROGRAM
![Page 6: Bab 8 Stack Dan Queue](https://reader036.vdokumen.com/reader036/viewer/2022082212/55cf8f5c550346703b9b8ff4/html5/thumbnails/6.jpg)
Deklarasi
Const max=4;Type
Coba = recorddata :string;End;Barang = ARRAY [1..max] of coba;
VarStack:barang;full,empty:boolean;pilih:integer;top:byte;ambil,taruh,input:string;
![Page 7: Bab 8 Stack Dan Queue](https://reader036.vdokumen.com/reader036/viewer/2022082212/55cf8f5c550346703b9b8ff4/html5/thumbnails/7.jpg)
Awal Program
• Memastikan posisi tumpukan kosong
• Element yang terambil belum ada
![Page 8: Bab 8 Stack Dan Queue](https://reader036.vdokumen.com/reader036/viewer/2022082212/55cf8f5c550346703b9b8ff4/html5/thumbnails/8.jpg)
Mengawali stack
Procedure create;
Begin
top:=0;
ambil:=‘belum ada';
taruh:=‘belum ada';
End;
![Page 9: Bab 8 Stack Dan Queue](https://reader036.vdokumen.com/reader036/viewer/2022082212/55cf8f5c550346703b9b8ff4/html5/thumbnails/9.jpg)
Inputan
• Dipastikan tumpukan belum penuh
• Menginput satu persatu
![Page 10: Bab 8 Stack Dan Queue](https://reader036.vdokumen.com/reader036/viewer/2022082212/55cf8f5c550346703b9b8ff4/html5/thumbnails/10.jpg)
Pengecekan Kepenuhan
procedure cekpenuh;
Begin
if top=max then
full:=true else full:=false;
End;
![Page 11: Bab 8 Stack Dan Queue](https://reader036.vdokumen.com/reader036/viewer/2022082212/55cf8f5c550346703b9b8ff4/html5/thumbnails/11.jpg)
Menambah Data
Procedure push;Begin
cekpenuh;If full=false then
Begintop:=top+1;writeln('masukkan data');readln(input);Stack[top].data:=input;taruh:=‘input';end
elsewriteln('maaf tumpukan sudah penuh tidak bisa menambah lagi');
End;
![Page 12: Bab 8 Stack Dan Queue](https://reader036.vdokumen.com/reader036/viewer/2022082212/55cf8f5c550346703b9b8ff4/html5/thumbnails/12.jpg)
Pengambilan
• Dipastikan tumpukan tidak kosong
• Pengambilan satu persatu
![Page 13: Bab 8 Stack Dan Queue](https://reader036.vdokumen.com/reader036/viewer/2022082212/55cf8f5c550346703b9b8ff4/html5/thumbnails/13.jpg)
Pengecekan Kekosongan
procedure cekkosong;
Begin
If top=0 then
empty:=true else empty:=false;
End;
![Page 14: Bab 8 Stack Dan Queue](https://reader036.vdokumen.com/reader036/viewer/2022082212/55cf8f5c550346703b9b8ff4/html5/thumbnails/14.jpg)
Pengambilan Data
Procedure Pop;Begin
cekkosong;If empty=false then
Beginambil:=stack[top].data;top:=top - 1;end
elsewriteln('maaf tumpukan kosong sudah tidak bisa
mengambil lagi');End;
![Page 15: Bab 8 Stack Dan Queue](https://reader036.vdokumen.com/reader036/viewer/2022082212/55cf8f5c550346703b9b8ff4/html5/thumbnails/15.jpg)
Menampilkan Semua data
• Procedure tampildata;
• Bagin
• For i:=1 to top do
• Begin
• Writeln(‘Data Ke-’,i,’:’,Stack*i+.data);
• End;
• End;
![Page 16: Bab 8 Stack Dan Queue](https://reader036.vdokumen.com/reader036/viewer/2022082212/55cf8f5c550346703b9b8ff4/html5/thumbnails/16.jpg)
Queue (Antrian)
Kuliah Struktur Data Pascal
![Page 17: Bab 8 Stack Dan Queue](https://reader036.vdokumen.com/reader036/viewer/2022082212/55cf8f5c550346703b9b8ff4/html5/thumbnails/17.jpg)
Definisi
• Adalah antrian data yang seolah-olah ada data yang mengantri dari yang terawal sampai yang terakhir.
• Suatu metode untuk Input dan hapus di dalam memori komputer.
• Konsep utama dalam Queue adalah FIFO ( First In First Out ).
• Contoh:1.Guntur,2.Aditya,3.Tyas,4.Hendra,5.Dyah
• Data nomor 1 datang/masuk duluan, data nomor 1 juga yang keluar terlebih dahulu.
![Page 18: Bab 8 Stack Dan Queue](https://reader036.vdokumen.com/reader036/viewer/2022082212/55cf8f5c550346703b9b8ff4/html5/thumbnails/18.jpg)
Arus Data
1 2 3 4 5
guntur aditya tyas hendra dini
KELUAR
MASUK
![Page 19: Bab 8 Stack Dan Queue](https://reader036.vdokumen.com/reader036/viewer/2022082212/55cf8f5c550346703b9b8ff4/html5/thumbnails/19.jpg)
Algoritma
• Input/tambah data
Jika ada input maka no queue/no antrian yang semula 0 akan tambah 1 demi 1 sampai maksimal antrian.
• Pengambilan data
Jika ada pengambilan data maka data dipindahkan di variabel lain contohnya temp. Dan posisi antriannya yang semula maksimal akan berkurang 1 demi 1 sampai posisi 0 kembali.
![Page 20: Bab 8 Stack Dan Queue](https://reader036.vdokumen.com/reader036/viewer/2022082212/55cf8f5c550346703b9b8ff4/html5/thumbnails/20.jpg)
Begin
Antri:=0;
{untuk input}
For I:=1 to 3 do
Begin
Writeln(’masukkan nama ke’,’ ’,i);
Readln(d[i]);
Antri:=antri+1;
End;
{untuk Output}
For I:=1 to 3 do
Begin
Temp:=d[i];
Antri:=antri-1;
End;
{lihat output di var temp setelah pengambilan }
Writeln(’hasil var temp=’,temp);
Readln;
End.
CONTOH PROGRAM QUEUE
![Page 21: Bab 8 Stack Dan Queue](https://reader036.vdokumen.com/reader036/viewer/2022082212/55cf8f5c550346703b9b8ff4/html5/thumbnails/21.jpg)
Deklarasi
program membuatqueue;uses crt;Type
Coba = recordnama :string;umur :integer;End;
Barang = ARRAY [1..4] of coba;Var
elemen:coba;queue:barang;full,empty:boolean;pilih,i:integer;antri:byte;
const max=4;label 1,2,3;
![Page 22: Bab 8 Stack Dan Queue](https://reader036.vdokumen.com/reader036/viewer/2022082212/55cf8f5c550346703b9b8ff4/html5/thumbnails/22.jpg)
Awal Program
• Memastikan posisi antrian kosong
• Element yang diproses belum ada
![Page 23: Bab 8 Stack Dan Queue](https://reader036.vdokumen.com/reader036/viewer/2022082212/55cf8f5c550346703b9b8ff4/html5/thumbnails/23.jpg)
Mengawali Queue
Procedure create;
Begin
antri:=0;
elemen.nama:='kosong';
![Page 24: Bab 8 Stack Dan Queue](https://reader036.vdokumen.com/reader036/viewer/2022082212/55cf8f5c550346703b9b8ff4/html5/thumbnails/24.jpg)
Inputan
• Dipastikan antrian belum penuh (memerlukan pengecekan kepenuhan)
• Menginput satu persatu
![Page 25: Bab 8 Stack Dan Queue](https://reader036.vdokumen.com/reader036/viewer/2022082212/55cf8f5c550346703b9b8ff4/html5/thumbnails/25.jpg)
Pengecekan Kepenuhan
procedure cekpenuh;
Begin
if antri=max then full:=true else full:=false;
End;
![Page 26: Bab 8 Stack Dan Queue](https://reader036.vdokumen.com/reader036/viewer/2022082212/55cf8f5c550346703b9b8ff4/html5/thumbnails/26.jpg)
Menambah Data
Procedure push;Begin
cekpenuh;If full=false thenBegin
antri:=antri+1;write(‘nama: ');
readln(queue[antri].nama);writeln;End
elsewriteln('maaf antrian sudah penuh tidak bisa menambah lagi');
End;
![Page 27: Bab 8 Stack Dan Queue](https://reader036.vdokumen.com/reader036/viewer/2022082212/55cf8f5c550346703b9b8ff4/html5/thumbnails/27.jpg)
Pengambilan
• Dipastikan antrian tidak kosong
• Pengambilan satu persatu atau lebih dari satu (optional)
![Page 28: Bab 8 Stack Dan Queue](https://reader036.vdokumen.com/reader036/viewer/2022082212/55cf8f5c550346703b9b8ff4/html5/thumbnails/28.jpg)
Pengecekan Kekosongan
procedure cekkosong;
Begin
If antri=0 then empty:=true else empty:=false;
End;
![Page 29: Bab 8 Stack Dan Queue](https://reader036.vdokumen.com/reader036/viewer/2022082212/55cf8f5c550346703b9b8ff4/html5/thumbnails/29.jpg)
Pengambilan DataProcedure Pop;
Begincekkosong;If empty=false then
BeginElemen.nama:=queue[1].nama;antri:=antri - 1;
endelsewriteln('maaf antrian kosong sudah tidak bisa mengambil
lagi');for i:=1 to antri doqueue[i]:=queue[i+1];
End;