📄 mam.c
字号:
/* TO CONVERT INFIX NOTATION TO POSTFIX NOTATION */
#include<stdio.h>
#include<conio.h>
#include<ctype.h>
#include<string.h>
#define MAX 50
struct infix
{
char target[MAX];
char stack[MAX];
int top;
};
void ininfix(struct infix *);
void push(struct infix *,char);
char pop(struct infix *);
void convert(struct infix *,char *);
int priority (char);
void show(struct infix);
void main()
{
struct infix p;
char expr[MAX];
ininfix(&p);
clrscr();
printf("\n\t\t ***** TO CONVERT INFIX TO POSTFIX *****");
printf("\n Enter the expression in infix notation:\n");
gets(expr);
convert(&p,expr);
printf("\n\t THE POSTFIX EXPRESSION IS:");
show(p);
getch();
}
void ininfix(struct infix *p)
{
p->top = -1;
strcpy (p->target, "");
strcpy (p->stack, "");
}
void push(struct infix *p,char c)
{
if( p->top == MAX)
printf("\n Stack is full");
else
{
p->top++;
p->stack[p->top] = c;
}
}
char pop(struct infix *p)
{
char item;
if(p-> top == -1)
{
printf("\n Stack is empty");
return -1;
}
else
{
item = p->stack[p->top];
p->top--;
return item;
}
}
void convert(struct infix *p,char *e)
{
char opr,*s;
int i=0;
s= e;
while(*s)
{
if (*s == ' ' || *s == '\t')
{
s++;
continue;
}
if(isdigit (*s) || isalpha (*s))
{
while (isdigit (*s) || isalpha(*s))
{
p->target[i++] = *s;
s++;
}
}
if (*s == '(')
{
push(p,*s);
s++;
}
if(*s == '+'|| *s == '*' || *s == '/'||
*s == '%' || *s == '-' || *s == '$')
{
if(p->top != -1)
{
opr = pop(p);
while (priority(opr) >= priority(*s) )
{
(p->target[i++])= opr;
if(p->top == -1)
break;
opr = pop(p);
}
if(priority(opr)!= priority(*s))
push(p,opr);
push(p,*s);
}
else
push(p,*s);
s++;
}
if(*s == ')')
{
opr = pop(p);
while((opr)!= '(')
{
p->target[i++]= opr;
opr = pop(p);
}
s++;
}
}
while(p->top != -1)
{
opr =pop(p);
p->target[i++] = opr;
}
p->target[i]='\0';
}
int priority(char c)
{
if( c == '$')
return 3;
if(c == '*' || c == '/'|| c == '%')
return 2;
if(c == '+' || c == '-')
return 1;
return 0;
}
void show(struct infix p)
{
printf("%s",p.target);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -