0% found this document useful (0 votes)
6 views5 pages

DSA03 Infix2postfix

The document is a lab report for a Data Structure course at Shri Vile Parle Kelavani Mandal's Institute of Technology, detailing an experiment on converting infix expressions to postfix notation. It includes a C program that implements the conversion algorithm using a stack data structure. The report also provides an example input and output for the conversion process.

Uploaded by

dhageatharv06
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views5 pages

DSA03 Infix2postfix

The document is a lab report for a Data Structure course at Shri Vile Parle Kelavani Mandal's Institute of Technology, detailing an experiment on converting infix expressions to postfix notation. It includes a C program that implements the conversion algorithm using a stack data structure. The report also provides an example input and output for the conversion process.

Uploaded by

dhageatharv06
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 5

Shri Vile Parle Kelavani Mandal's

INSTITUTE OF TECHNOLOGY
DHULE (M.S.)
DEPARMENT OF COMPUTER ENGINEERING
Remark
Subject : Data Structure Lab

Name : Dhage Atharv Vijaykumar Roll No. : 30

Class :S.Y. Computer Batch : S2 Division: B


Signature
Expt. No. :03 Date :

Title : infix to postfix conversion

code : Infix to Postfix conversion

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>

#define SIZE 100

char stack[SIZE];
int top = -1;

void push(char item)


{
if (top >= SIZE - 1) {
printf("\nStack Overflow.");
}
else {
top = top + 1;
stack[top] = item;
}
}

char pop()
{
char item;

if (top < 0) {
printf("stack under flow: invalid infix expression");
getchar();
exit(1);
}
else {
item = stack[top];
top = top - 1;
return (item);
}
}

int is_operator(char symbol)


{
if (symbol == '^' || symbol == '*' || symbol == '/' || symbol ==
'+' || symbol == '-') {
return 1;
}
else {
return 0;
}
}

int precedence(char symbol)


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

void InfixToPostfix(char infix_exp[], char postfix_exp[])


{
int i, j;
char item;
char x;

push('(');
strcat(infix_exp, ")");

i = 0;
j = 0;
item = infix_exp[i];

while (item != '\0')


{
if (item == '(') {
push(item);
}
else if (isdigit(item) || isalpha(item)) {
postfix_exp[j] = item;
j++;
}
else if (is_operator(item) == 1)
{
x = pop();
while (is_operator(x) == 1 && precedence(x) >=
precedence(item)) {
postfix_exp[j] = x;
j++;
x = pop();
}
push(x);

push(item);
}
else if (item == ')')
{
x = pop();
while (x != '(')
{
postfix_exp[j] = x;
j++;
x = pop();
}
}
else {
printf("\nInvalid infix Expression.\n");
getchar();
exit(1);
}
i++;

item = infix_exp[i];
}
if (top > 0) {
printf("\nInvalid infix Expression.\n");
getchar();
exit(1);
}
if (top > 0) {
printf("\nInvalid infix Expression.\n");
getchar();
exit(1);
}
postfix_exp[j] = '\0';
}

int main()
{
char infix[SIZE], postfix[SIZE];

printf("ASSUMPTION: The infix expression contains single letter


variables and single digit constants only.\n");
printf("\nEnter Infix expression : ");
scanf("%s",infix);

InfixToPostfix(infix, postfix);
printf("Postfix Expression: ");
puts(postfix);
return 0;
}

Output:

ASSUMPTION: The infix expression contains single letter variables


and single digit constants only.

Enter Infix expression : 2+2


Postfix Expression: 22+

You might also like