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

📄 bdszh.txt

📁 偶写了个将中序表达式转化成后序表达式的程序。不过只能对单字符进行操作
💻 TXT
📖 第 1 页 / 共 5 页
字号:
                               plstack->top=plstack->top->link;
                               plstack->top=q;
                               }
                               return (plstack);
                              }
                              PLinkStack pop_one(PLinkStack plstack)
                              {PNode p;
                               p=plstack->base;
                               while(p->link!=plstack->top) p=p->link;
                               plstack->top=plstack->top->link;
                               plstack->top=p;
                               return (plstack);
                              }
                              PLinkStack pop_all(PLinkList pllist,PLinkStack 
                              plstack)
                              {PNode p;
                               
                              if(!isOperator(pllist->top->info)&&pllist->top->info!='_') 
                              push_underline(pllist);
                               while(plstack->top!=plstack->base){
                                p=plstack->base;
                                while(p->link!=plstack->top) p=p->link;
                                Create_LinkListNode(pllist);
                                pllist->top->info=plstack->top->info;
                                plstack->top=plstack->top->link;
                                plstack->top=p;
                               }
                               return (plstack);
                              }
                              int isOperator(DataType i)
                              {
                                if(i=='+' || i=='-' || i=='*' || i=='/' || 
                              i=='(' || i==')') return (1);
                                else return (0);
                              }
                              int isPoint_included(PNode p)
                              {
                               PNode q,temp;
                               q=p;
                               while(q->link->info!='_'){
                                if(q->info=='.') temp=q;
                                q=q->link;
                               }
                               if(temp->info=='.') return (1);
                               else return (0);
                              }
                              int Calculator_underline(PNode p)
                              {
                               PNode q;
                               int i;
                               i=0;
                               q=p;
                               while(!isOperator(q->link->info)){
                                if(q->link->info=='_') i++;
                                q=q->link;
                               }
                               return (i);
                              }
                              NumberType Calculator(PLinkList pllist)
                              {
                               PNode p,q,temp,temp1,swap;
                                  int i,j;
                               NumberType t,t1,t2,tmark1,tmark2,m;
                               t=t1=t2=0;
                               q=p=pllist->base;
                               while(!isOperator(p->link->info)) p=p->link;/* 
                              find p */
                               while(p!=pllist->top){
                                
                              /**************************************************************/
                                
                              /**************************************************************/
                                if(!isOperator(p->info)&&p->link==pllist->top){
                                  if(q==pllist->base){                     /* 
                              find q */
                                       while(q!=p){
                                       if(q->info=='_') temp=q;
                                       q=q->link;
                                    }
                                       q=temp;
                                 }
                                 temp1=temp=pllist->base;
                                    while(temp!=q){                         /* 
                              find temp */
                                       if(temp->info=='_') temp1=temp;
                                       temp=temp->link;
                                 }
                                    temp=temp1; temp1=pllist->base;
                                    /*////////// Calculate function 
                              /////////////////////*/
                                    swap=q; i=0;       /* calculate t1 */
                                 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)){     /*doesn't 
                              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;}
                                 }
                                    swap=temp; t2=0;i=0;   /* calculate t2 */
                                 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||i==-1) 
                              {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||i==-1) 
                              {t2=t2+(NumberType)swap->link->info-'0';swap=swap->link;}
                                 }
                                 if(p->link->info=='+') t=t1+t2;
                                 else if(p->link->info=='-') t=t2-t1;
                                 else if(p->link->info=='*') t=t1*t2;
                                 else if(p->link->info=='/') t=t2/t1;
                                    /*///// Deal with the left 
                              //////////////////*/
                                   q=temp;
                                   p=p->link;
                                }
                                
                              /*******************************************************************/
                                
                              /*******************************************************************/
                               else 
                              if(!isOperator(p->info)&&isOperator(p->link->link->info)){
                                    if(q==pllist->base){                     /* 
                              find q */
                                       while(q!=p){
                                       if(q->info=='_') temp=q;
                                       q=q->link;
                                    }
                                       q=temp;
                                 }
                                 temp1=temp=pllist->base;
                                    while(temp!=q){                         /* 
                              find temp */
                                       if(temp->info=='_') temp1=temp;
                                       temp=temp->link;
                                 }
                                    temp=temp1; temp1=pllist->base;
                                    /*////////// Calculate function 
                              /////////////////////*/
                                    swap=q; i=0;       /* calculate t1 */
                                 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)){     /*doesn't 
                              include point*/
                                        while(swap->link->info!='_') 
                              {swap=swap->link; i++;}
                                        swap=q;
                                        while(swap->link->info!='_'&&--i!=0) {

⌨️ 快捷键说明

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