#include "stdafx.h"
#include <stdio.h>
#include <math.h>
#include <conio.h>
struct stack // стек знаков
{
char sign;
stack *next;
};
stack *insert(stack *&p, char a) //вставка в стек
{
stack *q;
q->sign = a;
q->next = p;
p = q;
return p;
}
int get_last(stack *&p) //взятие из стека, удаление
{
char a;
a = p->sign;
p = p->next;
return a;
}
int prior(char x) //определяет приоритет операции
{
if (x == '(')
return 0;
if (x == '+' || x == '-')
return 1;
if (x == '*' || x == '/')
return 2;
return 3;
}
void main()
{
char ent, x;
stack *p = NULL;
printf("enter your infix expression:\n");
do
{
scanf("%c", &ent);
if (prior(ent) == 3) //если это число
printf("%c", ent);
if (ent == '(')
insert(p, ent);
if (ent == ')')
{
while (p->sign != '(')
{
x = get_last(p);
printf("%c", x);
}
p = p->next;
}
if (prior(ent) <= prior(p->sign))
{
x = get_last(p);
printf("%c", x);
}
} while (ent != '\0');
getch();
}
/**/
Be the first to comment
You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.