⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bdszh.txt

📁 偶写了个将中序表达式转化成后序表达式的程序。不过只能对单字符进行操作
💻 TXT
📖 第 1 页 / 共 5 页
字号:
                                 while(!isOperator(p->link->info)) p=p->link;
                                 swap=temp1; t1=0;i=0;   /* calculate t1 */
                                 if(isPoint_included(temp)){   /*include point 
*/
                                  
                              while(swap->link->info!='.'){swap=swap->link;i++;}
                                  swap=temp;
                                  while(swap->link->info!='.'&&--i!=0){
                                   j=i;
                                   m=(NumberType)swap->link->info-'0';
                                   while(j--!=0) m=m*10;
                                   t1=t1+m;
                                   swap=swap->link;
                                  }
                                  if(i==0) 
                              {t1=t1+(NumberType)swap->link->info-'0'; 
                              swap=swap->link->link;}
                                  i=1;
                                  while(swap->link->info!='_'){
                                   j=i;
                                   m=(NumberType)swap->link->info-'0';
                                   while(j--!=0) m=m*1/10;
                                   t1=t1+m;
                                   swap=swap->link;
                                   i++;
                                  }
                                 }
                                 else if(!isPoint_included(temp)){
                                  
                              while(swap->link->info!='_'){swap=swap->link;i++;}
                                 swap=temp1;
                                        while(swap->link->info!='_'&&--i!=0) {
                                    j=i;
                                    m=(NumberType)swap->link->info-'0';
                                    while(j--!=0) m=m*10;
                                      t1=t1+m;
                                          swap=swap->link;
                                  }
                                  if(i==0) 
                              {t1=t1+(NumberType)swap->link->info-'0';swap=swap->link;}
                                 }
                                 if(p->link->info=='+') t=t+t1;
                                 else if(p->link->info=='-') t=t-t1;
                                 else if(p->link->info=='*') t=t*t1;
                                 else if(p->link->info=='/') t=t/t1;
                                 p=p->link;
                                }
                                
                              /******************************************************************/
                                
                              /********************************************************************/
                                else if(!isOperator(p->info) && 
                              !isOperator(p->link->link->info)&&Calculator_underline(p->link)==2){
                                 PNode ID;
                                 if(q==pllist->base){                     /* 
                              find q */
                                       while(q!=p){
                                       if(q->info=='_') temp=q;
                                       q=q->link;
                                    }
                                       q=temp;
                                 }
                                 swap=temp=pllist->base; /*find temp */
                                 while(temp->link!=q){
                                  if(temp->link->info=='_') swap=temp;
                                  temp=temp->link;
                                 }
                                 ID=temp=swap;
                                 swap=q;
                                 t1=t2=0;i=0;
                                 if(isPoint_included(q)){   /*include point */
                                  
                              while(swap->link->info!='.'){swap=swap->link;i++;}/*calculate 
                              t1*/
                                  swap=q;
                                  while(swap->link->info!='.'&&--i!=0){
                                   j=i;
                                   m=(NumberType)swap->link->info-'0';
                                   while(j--!=0) m=m*10;
                                   t1=t1+m;
                                   swap=swap->link;
                                  }
                                  if(i==0) 
                              {t1=t1+(NumberType)swap->link->info-'0'; 
                              swap=swap->link->link;}
                                  i=1;
                                  while(swap->link->info!='_'){
                                   j=i;
                                   m=(NumberType)swap->link->info-'0';
                                   while(j--!=0) m=m*1/10;
                                   t1=t1+m;
                                   swap=swap->link;
                                   i++;
                                  }
                                 }
                                 else if(!isPoint_included(q)){
                                  
                              while(swap->link->info!='_'){swap=swap->link;i++;}
                                        swap=q;
                                        while(swap->link->info!='_'&&--i!=0) {
                                    j=i;
                                    m=(NumberType)swap->link->info-'0';
                                    while(j--!=0) m=m*10;
                                           t1=t1+m;
                                          swap=swap->link;
                                  }
                                  if(i==0) 
                              {t1=t1+(NumberType)swap->link->info-'0';swap=swap->link;}
                                 }
                                 swap=temp;
                                 if(isPoint_included(temp)){   /*include point 
*/
                                  
                              while(swap->link->info!='.'){swap=swap->link;i++;}
                                  swap=temp;
                                  while(swap->link->info!='.'&&--i!=0){
                                   j=i;
                                   m=(NumberType)swap->link->info-'0';
                                   while(j--!=0) m=m*10;
                                   t2=t2+m;
                                   swap=swap->link;
                                  }
                                  if(i==0) 
                              {t2=t2+(NumberType)swap->link->info-'0'; 
                              swap=swap->link->link;}
                                  i=1;
                                  while(swap->link->info!='_'){
                                   j=i;
                                   m=(NumberType)swap->link->info-'0';
                                   while(j--!=0) m=m*1/10;
                                   t2=t2+m;
                                   swap=swap->link;
                                   i++;
                                  }
                                 }
                                 else if(!isPoint_included(temp)){
                                  
                              while(swap->link->info!='_'){swap=swap->link;i++;}
                                        swap=temp;
                                       while(swap->link->info!='_'&&--i!=0) {
                                    j=i;
                                    m=(NumberType)swap->link->info-'0';
                                    while(j--!=0) m=m*10;
                                           t2=t2+m;
                                          swap=swap->link;
                                  }
                                  if(i==0) 
                              {t2=t2+(NumberType)swap->link->info-'0';swap=swap->link;}
                                 }
                                  /*calculate t*/
                                 if(p->link->info=='+') tmark1=t1+t2;
                                 else if(p->link->info=='-') tmark1=t1-t2;
                                 else if(p->link->info=='*') tmark1=t1*t2;
                                 else if(p->link->info=='/') tmark1=t2/t1;
                                    temp1=p=p->link;
                                   /*//////////////////////dealt with the second 
                              part/////////*/
                                 t1=t2=0;i=0;
                                   while(!isOperator(p->link->info)) p=p->link;
                                   while(q->link!=p){                            
                                  /*find p*/
                                    if(q->link->info=='_') temp=q->link;
                                    q=q->link;
                                   }
                                   q=temp;
                                   temp=temp1;
                                   if(isPoint_included(q)){   /*include point */
                                  
                              while(swap->link->info!='.'){swap=swap->link;i++;}
                                  swap=q;
                                  while(swap->link->info!='.'&&--i!=0){
                                   j=i;
                                   m=(NumberType)swap->link->info-'0';
                                   while(j--!=0) m=m*10;
                                   t1=t1+m;
                                   swap=swap->link;
                                  }
                                  if(i==0) 
                              {t1=t1+(NumberType)swap->link->info-'0'; 
                              swap=swap->link->link;}
                                  i=1;
                                  while(swap->link->info!='_'){
                                   j=i;
                                   m=(NumberType)swap->link->info-'0';
                                   while(j--!=0) m=m*1/10;
                                   t1=t1+m;
                                   swap=swap->link;
                                   i++;
                                  }
                                 }
                                 else if(!isPoint_included(q)){
                                 swap=q;
                                  
                              while(swap->link->info!='_'){swap=swap->link;i++;}
                                        swap=q;
                                 while(swap->link->info!='_'&&--i>0) {
                                    j=i;
                                    m=(NumberType)swap->link->info-'0';
                                    while(j--!=0) m=m*10;
                                           t1=t1+m;
                                          swap=swap->link;
                                  }
                                  if(i==0||i==-1) 
                              {t1=t1+(NumberType)swap->link->info-'0';swap=swap->link;}
                                 }
                                 swap=temp;
                                 if(isPoint_included(temp)){   /*include point 
*/
                                  
                              while(swap->link->info!='.'){swap=swap->link;i++;}
                                  swap=temp;
                                  while(swap->link->info!='.'&&--i!=0){
                                   j=i;
                                   m=(NumberType)swap->link->info-'0';
                                   while(j--!=0) m=m*10;
                                   t2=t2+m;
                                   swap=swap->link;
                                  }
                                  if(i==0) 
                              {t2=t2+(NumberType)swap->link->info-'0'; 
                              swap=swap->link->link;}
                                  i=1;
                                  while(swap->link->info!='_'){
                                   j=i;
                                   m=(NumberType)swap->link->info-'0';
                                   while(j--!=0) m=m*1/10;
                                   t2=t2+m;
                                   swap=swap->link;
                                   i++;
                                  }
                                 }
                                 else if(!isPoint_included(temp)){
                                  
                              while(swap->link->info!='_'){swap

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -