Selasa, 01 Desember 2009

stack bahasa pascal

Program Tumpukan



uses wincrt;

const MaxElemen=5;

type Tumpukan =record

isi:array[1..MaxElemen] of integer;

atas: 0..MaxElemen

end;

type isi=array[0..maxelemen] of integer;

const isilama1:isi=(3,7,2,6,4,8);

isibaru1:isi=(4,8,3,6,5,1);

var

Nilailama,Nilaibaru:isi;

T:tumpukan;

{———————————————————————}

Procedure Ganti_NilaiStack(T:tumpukan;Nilailama,Nilaibaru:isi);

var

penuh,habis: boolean;

x,i:integer;

{———————————————————————}

procedure push( var T:tumpukan; var penuh:boolean;x:integer);

begin

if T.atas = maxElemen then penuh:=true

else

begin

penuh :=false;

T.isi[T.atas]:=x;

T.atas:=T.atas+1;

end;

end;

{———————————————————————}

procedure pop(var T:tumpukan;var habis:boolean; var x:integer);

begin

if T.atas =0 then habis:=true

else

begin

habis:=false;

T.atas:=T.atas-1;

x:=T.isi[T.atas];

end;

end;

{———————————————————————}

begin

clrscr;

write(‘Nilai Lama Sebelum Masuk Tumpukan : ‘);

for i:=0 to maxelemen do

write(isilama1[i]);

writeln;

write(‘Nilai Baru Sebelum Masuk Tumpukan : ‘);

for i:=0 to maxelemen do

write(isibaru1[i]);

writeln;

penuh:=false;

while penuh=false do

begin

push(T,penuh,Nilailama[T.atas]);

end;

write(‘Isi Tumpukan Lama : ‘);

while T.atas<>0 do

begin

pop(T,habis,x);

write(x);

end;

writeln;penuh:=false;

while penuh=false do

begin

push(T,penuh,Nilaibaru[T.atas]);

end;

write(‘Isi Tumpukan Baru : ‘);

while T.atas<>0 do

begin

pop(T,habis,x);

write(x);

end;

end;

{———————————————————————}

begin

Nilailama:=isilama1;Nilaibaru:=isibaru1;

Ganti_NilaiStack(T,Nilailama,Nilaibaru);

readkey;

end.

Tidak ada komentar:

Posting Komentar