写程序展开它
(a1|a2)*(b1|b2)->a1*b1|a1*b2|a2*b1|a2*b2*的优先级别高于|a1*(b1|b2)|(x|y|z)*(a|b|c)|p
展开为:a1*b1|a1*b2|x*a|x*b|x*c|y*a|y*b|y*c|z*a|z*b|z*c|p这个算法如何展开,还望帮忙
(a1|a2)*(b1|b2)->a1*b1|a1*b2|a2*b1|a2*b2*的优先级别高于|a1*(b1|b2)|(x|y|z)*(a|b|c)|p
展开为:a1*b1|a1*b2|x*a|x*b|x*c|y*a|y*b|y*c|z*a|z*b|z*c|p这个算法如何展开,还望帮忙
分成a1*(b1|b2) (x|y|z)*(a|b|c) p 三部分
这些部分符合(x|y|........)*(x|y|........)之后就可以定义函数
c(链表 a,链表 b) 其中a=x,y......; b=x,y.......
利用c(链表 a,链表 b)这个函数函数 可把上面例子分成
a1 b1;a1 b2;x a;x b;x c;y a;y b;y c;z a;z b;z;c p;
加上符号就可以了 这是大体思路 把a1*(b1|b2)|(x|y|z)*(a|b|c)|p分解成3部分的思路是:
遇到*号不分解加入链表
遇到'('则全部加入直到')'
遇到|则新建链表c(链表 a,链表 b)这个函很容易实现;自己想的,不怎么好,我想会有更加好的算法