0% menganggap dokumen ini bermanfaat (0 suara)
5 tayangan4 halaman

Konversi Infix ke Postfix dengan Stack

Dokumen ini menjelaskan program dalam bahasa C untuk mengonversi notasi infix menjadi postfix menggunakan struktur data stack. Program ini menerima ekspresi infix sebagai input, memprosesnya karakter per karakter, dan mengatur operator berdasarkan prioritas sebelum menghasilkan ekspresi postfix. Kesimpulan menyatakan bahwa program berhasil mengelola dan mengeluarkan operator yang tersisa setelah semua karakter diproses.

Diunggah oleh

animlovers2022
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
5 tayangan4 halaman

Konversi Infix ke Postfix dengan Stack

Dokumen ini menjelaskan program dalam bahasa C untuk mengonversi notasi infix menjadi postfix menggunakan struktur data stack. Program ini menerima ekspresi infix sebagai input, memprosesnya karakter per karakter, dan mengatur operator berdasarkan prioritas sebelum menghasilkan ekspresi postfix. Kesimpulan menyatakan bahwa program berhasil mengelola dan mengeluarkan operator yang tersisa setelah semua karakter diproses.

Diunggah oleh

animlovers2022
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd

1.

Program Stack Konversi Infix ke Postfix


Listing Program
#include <stdio.h>
#include <string.h>
#define MAXSTACK 100

typedef char ItemType;


typedef struct{
char item[MAXSTACK];
int count;
}Stack;

Stack tumpukan;

void InitializeStack(Stack *);


int Empty(Stack *);
int Full(Stack *);
void Push(ItemType, Stack *);
ItemType Pop(Stack *);
int drjt(char);
void konversi_cetak(char []);

int main()
{
char tampung[MAXSTACK], jawab;
puts("PROGRAM STACK MENGUBAH NOTASI INFIX MENJADI
POSTFIX");
do{
InitializeStack(&tumpukan);
fflush(stdin);
puts("");
printf("Masukkan ekspresi dalam notasi infix : ");
fgets(tampung, sizeof(tampung), stdin);
printf("Ungkapan postfixnya = ");
konversi_cetak(tampung);
puts("");
fflush(stdin);
printf("\nMau mencoba lagi (y/t) ? ");
scanf("%c", &jawab);
}while((jawab == 'y') || (jawab == 'Y'));
return(0);
}

void InitializeStack(Stack *S)


{
S->count = 0;
}

int Empty(Stack *S)


{
return (S->count == 0);
}

int Full(Stack *S)


{
return (S->count == MAXSTACK);
}

void Push(ItemType x, Stack *S)


{
if(Full(S))
printf("Stack penuh! Data tidak dapat masuk!");
else{
++(S->count);
S->item[S->count]=x;
}
}

ItemType Pop(Stack *S)


{
ItemType x;
if (Empty(S)){
printf ("STACK KOSONG!");
return 0;
}
else{
x = (S->item[S->count]);
--(S->count);
return x;
}
}

int drjt(char x)
{
if(x == '(')
return 0;
else if((x == '+') || (x == '-'))
return 1;
else if((x == '*') || (x == '/'))
return 2;
else if(x == '^')
return 3;
else
return -1;
}

void konversi_cetak(char temp[])


{
int i, pjg, valid = 1;
char kar, smtr;

pjg = strlen(temp)-1;
for (i=0;i<pjg;i++){
kar = temp[i];
switch(kar){
case '(' :
Push(kar, &tumpukan);
break;

case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case
'8': case '9':
printf("%c", kar);
break;

case '+': case '-': case'*': case '/': case '^':


if((Empty(&tumpukan)) || ((drjt(kar) >
drjt([Link][[Link]]))))
Push(kar, &tumpukan);
else{
do{
smtr = Pop(&tumpukan);
printf("%c", smtr);
}while (drjt(kar) < drjt([Link][[Link]]));
Push(kar, &tumpukan);
}
break;

case ')':
while([Link][[Link]] != '('){
smtr = Pop(&tumpukan);
printf("%c", smtr);
}
Pop(&tumpukan);
break;

default :
valid = 0;
puts("INVALID STATEMENT");
break;
}
}
if((valid != 0) && (!Empty(&tumpukan))){
smtr = Pop(&tumpukan);
printf("%c", smtr);
}
}

Output

Kesimpulan
o Program stack konversi notasi infix ke postfix dalam bahasa C
menggunakan struktur data stack untuk mengubah notasi infix menjadi
postfix.
o Notasi infix diterima sebagai string dan kemudian diproses karakter per
karakter.
o Setiap karakter di dalam notasi infix diperiksa untuk menentukan
apakah itu operator atau operand.
o Operan ditambahkan ke ekspresi postfix tanpa perubahan, sedangkan
operator dimasukkan ke stack.
o Operator dalam stack diurutkan berdasarkan tingkat prioritas operator,
dan operator dengan prioritas lebih tinggi diproses terlebih dahulu.
o Ketika operator dengan prioritas lebih rendah ditemukan, operator
dengan prioritas lebih tinggi dikeluarkan dari stack dan ditambahkan ke
ekspresi postfix.
o Setelah selesai memproses semua karakter dalam notasi infix, operator
yang tersisa di dalam stack akan dikeluarkan dan ditambahkan ke
ekspresi postfix.

Anda mungkin juga menyukai