bab 8 stack dan queue

Download Bab 8 Stack Dan Queue

Post on 21-Dec-2015

218 views

Category:

Documents

1 download

Embed Size (px)

DESCRIPTION

Stack dan Queue

TRANSCRIPT

  • STACK

    Kuliah Struktur Data Pascal

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

  • Arus Data5 Guntur

    12

    4 Aditya

    24

    3 Tyas

    14

    2 Hendra

    15

    1 Dyah

    25

    MASUK KELUAR

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

  • 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

  • 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;

  • Awal Program

    Memastikan posisi tumpukan kosong

    Element yang terambil belum ada

  • Mengawali stack

    Procedure create;

    Begin

    top:=0;

    ambil:=belum ada';

    taruh:=belum ada';

    End;

  • Inputan

    Dipastikan tumpukan belum penuh

    Menginput satu persatu

  • Pengecekan Kepenuhan

    procedure cekpenuh;

    Begin

    if top=max then

    full:=true else full:=false;

    End;

  • 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;

  • Pengambilan

    Dipastikan tumpukan tidak kosong

    Pengambilan satu persatu

  • Pengecekan Kekosongan

    procedure cekkosong;

    Begin

    If top=0 then

    empty:=true else empty:=false;

    End;

  • 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;

  • Menampilkan Semua data

    Procedure tampildata;

    Bagin

    For i:=1 to top do

    Begin

    Writeln(Data Ke-,i,:,Stack*i+.data);

    End;

    End;

  • Queue (Antrian)

    Kuliah Struktur Data Pascal

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

  • Arus Data

    1 2 3 4 5

    guntur aditya tyas hendra dini

    KELUAR

    MASUK

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

  • 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

  • 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;

  • Awal Program

    Memastikan posisi antrian kosong

    Element yang diproses belum ada

  • Mengawali Queue

    Procedure create;

    Begin

    antri:=0;

    elemen.nama:='kosong';

  • Inputan

    Dipastikan antrian belum penuh (memerlukan pengecekan kepenuhan)

    Menginput satu persatu

  • Pengecekan Kepenuhan

    procedure cekpenuh;

    Begin

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

    End;

  • 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;

  • Pengambilan

    Dipastikan antrian tidak kosong

    Pengambilan satu persatu atau lebih dari satu (optional)

  • Pengecekan Kekosongan

    procedure cekkosong;

    Begin

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

    End;

  • 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;