INFIX TO PREFIX
Definisi
Awalan
atau prefix adalah kelompok huruf yang ditempatkan pada bagian awal kata
atau root (bentuk paling sederhana) dari suatu kata, sehingga tidak dapat
diuraikan lagi. Prefix adalah notasi yang terbentuk
atas operator dan operand, dimana operator berada di depan operand.
Operator adalah fungsi yang digunakan dalam proses
Operand adalah data atau nilai yang dibantu dalam
proses
Contoh
:
A +
B * C
Notasi
dari prefixnya adalah +A*BC.
Pemecahnya A+B*C
Ilustrasi
Kode Program
def Stack():
opStack=[]
return opStack
def push(opStack,data):
opStack.append(data)
def pop(opStack):
data =
opStack.pop()
return data
def peek(opStack):
return
opStack[len(opStack)-1]
def isEmpty(opStack):
return
opStack == []
def size(opStack):
return
len(opStack)
def infixToPrefix(infixexpr):
prec = {}
prec["*"] = 3
prec["/"] = 3
prec["+"] = 2
prec["-"] = 2
prec["("] = 1
prec[")"] = 1
opStack =
Stack()
prefixList =
[]
tokenList =
infixexpr.split()
hasil=' '
for token in
tokenList:
if token
in"0123456789" or token in"ABCDEFGHIJKLMNOPQRSTUVWXYZ":
prefixList.append(token)
elif
token == ')':
push(opStack,token)
elif
token == '(':
topToken = pop(opStack)
while topToken != ')':
prefixList.append(topToken)
topToken = opStack.pop()
else:
while (not isEmpty(opStack)) and (prec[peek(opStack)]>= prec[token]):
prefixList.append(opStack.pop())
push(opStack,token)
while not
isEmpty(opStack):
prefixList.append(opStack.pop())
return
hasil.join(prefixList[::-1])
infix = " A + B * C "
infix_balik = infix[::-1]
print(infixToPrefix(infix_balik))