数据结构-中缀式转后缀式-C语言实现

数据结构-中缀式转后缀式-C语言实现,第1张

数据结构-中缀式转后缀式-C语言实现
#include
#include
int length(char String[]) {
	int count = 0;
	for (int i = 0; String[i] != ';'++ i)++
		count;return
	; count}
void
after (char[ String])int {
	= len length ()String;char
	[ stack19];//char *stack = (char *)malloc(sizeof(char)*len);
	char
	[ ch6]= '+' { ,'-','*','/','(',')'} ;int
	= top - 1;for
	( int= i 0 ;< i ; len++ i)//printf("c:%c\n", String[i]); {
		int
		= flag 0 ;//判断是否是字母还是运算符for
		( int= j 0 ;< j 6 ;++ j)if {
			( [String]i== [ ch]j)= {
				flag 1 ;break
				;}
			}
		//printf("%d\n", flag);
		if
		( ==flag 0 )printf {
			("%c",[ String]i);continue
			;}
		else
		if {
			( [String]i== ')' )//(*)内容全部出栈 {for
				( ;[ stack]top!= '(' ;-- top)printf {
					("%c",[ stack]top);}
				--
				top;//printf("%d\n", top);
				continue
				;}
			if
			( ==top - 1|| [ String]i== '(' )[ {
				stack++]top= [ String]i;continue
				;}
			else
			if {
				( [stack]top== '(' )[ {
					stack++]top= [ String]i;continue
					;}
				int

				, pr; pp//pr表示字符当前状态,pp表示栈顶状态,用数字表示-+为0,*/为1if
				( [String]i== '+' || [ String]i== '-' )= {
					pr 0 ;}
				if
				( [String]i== '*' || [ String]i== '/' )= {
					pr 1 ;}
				if
				( [stack]top== '+' || [ stack]top== '-' )= {
					pp 0 ;}
				if
				( [stack]top== '*' || [ stack]top== '/' )= {
					pp 1 ;}
				if
				( <=pr ) ppint {
					= cc 0 ;for
					( int= j 0 ;<= j ;top++ j)if
						( [stack]j== '(' )= {
							cc 1 ;break ;}
						if
					( ==cc 1 )for {
						( ;[ stack]top!= '(' ;-- top)printf
							("%c",[ stack]top);}
					else
					for
					{
						( ;0 top >= ;-- top)printf
							("%c",[ stack]top);}
					[
					stack++]top= [ String]i;}
				else
				[ {
					stack++]top= [ String]i;}
				}
			}
		}
	for
	( ;!= top - 1;-- top)printf {
		("%c",[ stack]top);}
	}
void
main ()char
{
	[ String]= "a+b-a*((c+d)/e-f)+g" ;after
	()String;}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/867105.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-12
下一篇2022-05-12

发表评论

登录后才能评论

评论列表(0条)

    保存