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

,

One response to “Aplikasi Stack pada Struktur Data untuk Mengkonversikan Notasi INFIX Menjadi POSTFIX”

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

Leave a Reply