注册 登录
编程论坛 数据结构与算法

一元多项式加法函数的程序不知错哪里啦

泡vs泡happy 发布于 2013-11-08 20:49, 518 次点击
这段程序编译时能通过,就是不能实现,运行时,直接跳过,求改错!


void add(){
   
 lnode *s1,*s2,*temp;
 lnode *pre=NULL;
 float sum;
 s1=H1;
 s2=H2;
 pre=new lnode;
 pre->next=H1;
 
 while(s1!=NULL&&s2!=NULL){
 if(s1->b<s2->b){
     pre->next=s1;
     pre=pre->next;
     s1=s1->next;
   
 
 }
 
 else if(s1->b==s2->b){
     sum=s1->a+s2->a;
     if(sum==0){
         temp=s1;
         s1=s1->next;
         delete temp;
         temp=s2;
         s2=s2->next;
         delete temp;
     }
     else {
         s1->a=sum;
        
         pre->next=s1;
         pre=pre->next;
         s1=s1->next;
         temp=s2;
         s2=s2->next;
         delete temp;
         

          }
     
 }     
 else{
     pre->next=s2;
     pre=pre->next;
     s2=s2->next;
     
 }
 }

 if(s1!=NULL)
     pre->next=s1;
   
 
 else
     pre->next=s2;
     
 

     cout<<"相加后的结果为:"<<endl;
      s1=H1;   
 while(s1){
   


         if(s1!=H1&&s1->a>0)
            
             cout<<"+"<<s1->a<<"x^"<<s1->b;
            
         
         else
             cout<<s1->a<<"x^"<<s1->b;
        
     s1=s1->next;
 }
 cout<<endl;
 
  }
4 回复
#2
yuccn2013-11-09 08:32
代码不全?
if(s1->b<s2->b){  这样命名,哈哈,感觉有点 ~~  两个字母连起来读
#3
泡vs泡happy2013-11-09 10:57
版主大人见笑啦,给改下错呗
#4
qunxingw2013-11-13 14:07
看似是无头结点的链,感觉改:pre=H1;
处理相加时,感觉应删s1,s2结点,这样:temp=s1一>next;
 delete s1;
 s1=temp;
……
后面未看
#5
泡vs泡happy2013-11-14 10:32
回复 4楼 qunxingw
恩,没有头结点,到这块就有点麻烦啦
1