- 论坛徽章:
- 0
|
//程序的第二部分
int main(){
char cTmp[64]; /*实在不想用数组,但是这里不是本程序的重点,虽然可以改成链表,但实在没什么意思,故先用数组凑合下,其他数据都是链表。*/
cout<<"enter here:";
cin>>cTmp; /*将屏幕数据读入cTmp,这里设输入的是(11.1+2)*3,则cTmp中存储的是:'(','1','1','.','1','+','2',')','*','3','\0'*/
Link *L;
L=transform(cTmp); /*格式转化程序,如果数组cTmp为'(','1','1','.','1','+','2',')','*',3,'\0'则返回的L链表为
L->fh L->num L->type
链表头 '(' 0 2
L=L->next '\0' 11.1 1
L=L->next '+' 0 2
L=L->next '\0' 2 1
L=L->next ')' 0 3
L=L->next '+' 0 2
L=L->next '\0' 3 1
L=L->next '\0' 0 4
这时我们将L的存储情况称为:L存储的内容为(1+2)*3;
*/
simplify(L);//对L进行去括号,去括号后L存储的内容变为 3*3
Link *Lres;//用于存放calculate的运算结果。
Lres=calculate(L); //此时L链表中已经不含括号,从L链表的头部再进行一次calculate,就有结果。
cout<<"="<<Lres->num<<endl;
return 0;
}
//待续
[ 本帖最后由 acc98596 于 2007-4-21 23:39 编辑 ] |
|