Aplikasi Stack pada Struktur Data untuk Mengkonversikan Notasi INFIX Menjadi POSTFIX
Listing Program
Uses crt;
const
Noelstack = 80;
Makschar = 80;
Type
Eon = char;
stack = Record
Top : array[1...Noelstack] of Eon;
Noel : 0… Noelstack;
End;
Tipeindex = 0… makschar;
Typeeks = array[1... Noelstack] of char
Var
lagi : char;
{Bentuk-bentuk operasi stack}
Function isempty(Var s : stack):Boolean;
Begin
IsEmpty : = s. noel = 0
End;
Procedure create (var s. stack);
Begin
S. Noel : = 0;
End;
procedure buatkosong (Var s. stack);
Begin
S. Noel : = 0;
End ;
Procedure stack Error (tingkat Error: integer);
Begin
Case tingkat error of
1 : Writeln (isi stack sudah terlalu penuh);
2 : Writeln (isi stack kosong);
End
End;
Procedure push( var s : stack; tipebaru : Eon);
Begin
If s. Noel = Noel stack then
stack Error(1)
Else
Begin
s.Noel : = s. Noel+1 ;
s.Top[s.Noel] : = tipebaru
End
End;
Procedure pop(var s: stack ;
var nilaistack : Eon);
Begin
If s. Noel = 0 then
Stack error(2)
Else
Begin
Nilaistack : = s.top[s.Noel];
S.Noel : = s. Noel – 1;
End
End;
{proses konversi suatu ekspresi}
Function puncak stack(s : stack) : Eon;
Begin
Puncak stack : = s.top[s.noel]
End;
Function isidlmstack (operator: char); integer;
Begin
case operator of
‘(‘ : isidlmstack : = 0;
‘+’,'-’ : isidlmstack : = 2;
‘*’,',’/’ : isidlmstack : = 4;
End
End;
Function stackyangdibaca (operator : char): integer
Begin
Case operator of
‘)’ : stackyangdibaca : =0;
‘+’,'-’ : stackyangdibaca : = 1;
‘*’,'/’ : stackyangdibaca : = 3;
‘(‘ : stackyangdibaca : = 5;
End
End;
Procedure simpanchar(ch:char; Var ekspost : Tipeks;Var indekspost ; Tipeindex);
Begin
Indekspost : = indeks post+1;
ekspost [indekspost]: = ch;
End;
Procedure konversi infixkePostfix (eks dlm : Tipe eks;
pjg dlm : Tipe index;
var ekspost: Tipe Eks;
var panjang post : Tipe indeks);
Var
opstack : stack ;
indeksdlm, indeks post: Tipe index;
chdlm, operator, simpan : char ;
Begin
create (Opstack);
Push (Opstack, ‘(‘);
eksdlm[pjg dlm +1] := ‘)’;
Indeks post: = 0;
For indeksdlm : = 1 to pjgdlm +1 Do
Begin
chdlm: = Eks Dlm [indeks dlm];
if ch dlm in ['A'....'Z'] then
simpan char (ch Dlm, Ekspost,indekspost)
Else
Begin
While isidlmstack(puncak stack (opstack))> stack yang dibaca (ch dlm) Do
begin
pop(opstack,operator);
simpanchar(operator,ekspost,indekspost)
end;
if chdlm = ‘)’ then
pop(opstack,simpan)
else
push(opstack,simpan)
end
panjang post := indekspost
end;
panjang post := indekspost
end;
produce konversi ekspresi;
var
indeks panjangdlm, panjang post :tipe index;
eksdlm,ekspot :tipe eks
begin
lagi :=’y';
While (upcase(lagi) =’x’ do
Begin
clsscr;
panjangdlm := 0
while not eoln do
begin
panjangdlm:=panjangdlm +1;
read(eksdlm[panjangdlm])
end;
readln ;
write(‘ekspresi infix:’);
for index := 1 to panjangdlm do
write(eksdlm[index]);
writeln;
konversiinfixkePostfix(eksdlm, panjangdlm, ekspost, panjang post);
write (‘dalam bentuk Postfix’)
for indeks := 1 to panjangpost do
write (ekspost [indeks]);
writeln;
writeln;
write (‘ada data lagi.’); readln (lagi)
end;
End;
begin
konversi ekspresi;
end
Kata Kunci
stack struktur data, aplikasi stack, stack dalam pascal, stack pada pascal, program stack dengan pascal, struktur data stack, kolom pada array structure menunjukkan, cara buat program infix ke postfix pascal, stack dalam struktur data, APLIKASI Struktur data.
Related posts:
penyelesaian program berikut dari infix ke postfix bagaimana
A+B*(C-E/F)+(G-E)^H
Jika A=8,B=4,C=3,E=6,F=2,G=7,H=5
beserta bahasa pemrogramannya