# implement a Implementation of prefix expression

Discussion in 'C' started by go4expert, Aug 13, 2004.

1. ### go4expertModerator

Joined:
Aug 3, 2004
Messages:
306
9
Trophy Points:
0
Implementation of prefix expression

please help with following code. I am trying to implement a function that uses queue to implement a prefix expression

ex:
+ 1 * 2 3
1 * 2 3 +
* 2 3 + 1
+ 1 6
7
it should stop at when 7 is the only item in the queue

my code is (can use a normal queue)
Code:
```int doParse(char *input) //passing a string
{
QueueType* queue; //ADT pointer to queue
int i=0,num1,n,num2, interAns,count=0;
queue = CreateQueueType(); // create queue
while(*input){
Enqueue(queue, *input);
input++;
}
while(*input=='\0'){
if (*input == '+' || *input == '-' || *input == '*' || *input == '/' )
{
if(isdigit(input[i+1]) && isdigit(input[i+2]))
{
num1=input[i+1]-'0';
num2=input[i+2]-'0';
switch(input[i])
{
case '+':
interAns = num1 + num2;
break;
case '-':
interAns = num1 - num2;
break;
case '*':
interAns = num1 * num2;
break;
case '/':
interAns = num1 / num2;
break;
}
Enqueue(queue, interAns - '0');
Dequeue(queue, &n);
Dequeue(queue, &n);
Dequeue(queue, &n);

}else{
Dequeue(queue, &n);
Enqueue(queue, *input - '0');
}
}else if(isdigit(*input)){
Dequeue(queue, &n);
Enqueue(queue, *input - '0');
}

input++;
count++;
}
if(GetLength(queue)==1){
Dequeue(queue, &n);

DeleteQueueType(queue);
return n;
}
}
```

Last edited: Aug 13, 2004

Joined:
Jul 12, 2004
Messages:
15,326
377
Trophy Points:
83
Re: Implementation of prefix expression

Please mention what type of help is needed you havent mentioned or any errors that are coming.

Code:
```        while(*input){
Enqueue(queue, *input);
input++;
}
```
After Enqueueing why you prefer to use input rather use queue var.
Code:
`while(*input=='\0'){`
Thanks
Shabbir Bhimani