LAPORAN PRAKTIKUM
ALGORITMA DAN STRUKTUR DATA II
MODUL IV
PREFIX, INFIX DAN POSTFIX
Disusun Oleh :
Syukur Jaya Mendrofa 201501072
Kelas: C
Dosen Pengampu :
Oskar Ika Adi Nugroho, ST., MT
JURUSAN SISTEM INFORMASI
SEKOLAH TINGGI ILMU KOMPUTER “YOS SUDARSO”
PURWOKERTO
BAB I
DASAR TEORI
Program Stack Metode Notasi Polish
Seorang ahli matematika “Jan Lukasiewicz“ mengembangkan satu cara penulisan ungkapan numeris yang selanjutnya disebut “Notasi Polish“ atau “Notasi Prefix” yang artinya: operator ditulis sebelum kedua operand yang akan disajikan.
Dalam struktur data yang banyak dipelajari, kita ketahui adanya 3 notasi operasi yang dilakukan untuk suatu operasi aritmatika, yaitu prefix, infix, dan postfix.
Sebelum kita kupas mengenai notasi di atas, perlu dipahami terlebih dahulu indikator yang membentuk terjadinya notasi dalam struktur data. Notasi terbentuk dari operand dan operator. Operand adalah data atau nilai yang membantu dalam proses sedangkan operator adalah fungsi yang digunakan dalam proses.
1. Prefix adalah metode penulisan dengan meletakkan operator di depan operand dan tanpa menuliskan tanda kurung.
Contoh pemakaian prefix
+AB, – +ABC, * + AB – CD
2. Infix adalah cara penulisan ungkapan dengan meletakkan operator di antara dua operand dalam hal ini pemakaian tanda kurung sangat menentukan hasil operasi. Contoh pemakaian infix
A+B, A+B-C, (A+B)*(C-D)
3.
Postfix adalah metode penulisan dengan menuliskan operator setelah operand dan tanpa menuliskan tanda kurung.Contoh pemakaian postfix
BAB II
TUGAS
1. Program Mengubah Notasi Postfix ke Notasi Infix Listing Program
struct node *next; struct node *prev; } *stack[11];
typedef struct node node;
void push(node *str) {
if (top <= 0)
printf("Stack Penuh "); else
{
stack[top] = str; top--;
printf("Stack Kosong "); else
exp = stack[++top]; return exp;
}
void ubah(char exp[]) {
node *op1, *op2; node *temp; int i;
for (i = 0; exp[i] != '\0'; i++)
if (exp[i] >= 'a'&& exp[i] <= 'z' || exp[i] >= 'A' && exp[i] <= 'Z') {
temp->next = NULL; temp->prev = NULL; push(temp);
temp = (node*)malloc(sizeof(node)); temp->ch = exp[i];
temp->next = op1; temp->prev = op2; push(temp); }
}
void tampil(node *temp) {
printf("PROGRAM KONVERSI NOTASI POSTFIX KE NOTASI INFIX \n"); printf("Masukkan Notasi Postfix \n");
scanf("%s", exp); ubah(exp);
printf("Notasi Infix : \n"); tampil(pop());
printf( " \n By SYUKUR JAYA MENDROFA"); printf("\n\n");
2. Program Mengubah Notasi Postfix ke Notasi Prefix #define flag '#'
using namespace std; bool isOperator(char c) {
char postfix[50], prefix[50]; int x = 0, kl;
cout << "PROGRAM KONVERSI NOTASI POSTFIX KE NOTASI PREFIX" <<endl;
cout << "Masukkan Notasi Postfix: " << endl; cin >> postfix;
kl = strlen(postfix);
for (int i =kl - 1; i >= 0; i--)
prefix[x++] = postfix[i];
while (!S.empty() && S.top() == flag) {
S.pop();
prefix[x++] = S.top(); S.pop();
reverse(prefix, prefix + kl); cout << endl;
cout << "Notasi Prefix : \n" << prefix; cout << endl;
cout << endl;
cout << endl; system("pause"); return 0;
}