bab 8-stack-dan-queue

29

Click here to load reader

Upload: razik-akamal

Post on 14-Jun-2015

902 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Bab 8-stack-dan-queue

STACK

Kuliah Struktur Data Pascal

Page 2: Bab 8-stack-dan-queue

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

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

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

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

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

Awal Program

• Memastikan posisi tumpukan kosong

• Element yang terambil belum ada

Page 8: Bab 8-stack-dan-queue

Mengawali stack

Procedure create;

Begin

top:=0;

ambil:=‘belum ada';

taruh:=‘belum ada';

End;

Page 9: Bab 8-stack-dan-queue

Inputan

• Dipastikan tumpukan belum penuh

• Menginput satu persatu

Page 10: Bab 8-stack-dan-queue

Pengecekan Kepenuhan

procedure cekpenuh;

Begin

if top=max then

full:=true else full:=false;

End;

Page 11: Bab 8-stack-dan-queue

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

Pengambilan

• Dipastikan tumpukan tidak kosong

• Pengambilan satu persatu

Page 13: Bab 8-stack-dan-queue

Pengecekan Kekosongan

procedure cekkosong;

Begin

If top=0 then

empty:=true else empty:=false;

End;

Page 14: Bab 8-stack-dan-queue

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

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

Queue (Antrian)

Kuliah Struktur Data Pascal

Page 17: Bab 8-stack-dan-queue

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

Arus Data

1 2 3 4 5

guntur aditya tyas hendra dini

KELUAR

MASUK

Page 19: Bab 8-stack-dan-queue

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

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

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

Awal Program

• Memastikan posisi antrian kosong

• Element yang diproses belum ada

Page 23: Bab 8-stack-dan-queue

Mengawali Queue

Procedure create;

Begin

antri:=0;

elemen.nama:='kosong';

Page 24: Bab 8-stack-dan-queue

Inputan

• Dipastikan antrian belum penuh (memerlukan pengecekan kepenuhan)

• Menginput satu persatu

Page 25: Bab 8-stack-dan-queue

Pengecekan Kepenuhan

procedure cekpenuh;

Begin

if antri=max then full:=true else full:=false;

End;

Page 26: Bab 8-stack-dan-queue

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

Pengambilan

• Dipastikan antrian tidak kosong

• Pengambilan satu persatu atau lebih dari satu (optional)

Page 28: Bab 8-stack-dan-queue

Pengecekan Kekosongan

procedure cekkosong;

Begin

If antri=0 then empty:=true else empty:=false;

End;

Page 29: Bab 8-stack-dan-queue

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;