| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 407 人关注过本帖
标题:一元多项式加法函数的程序不知错哪里啦
只看楼主 加入收藏
泡vs泡happy
Rank: 2
等 级:论坛游民
帖 子:30
专家分:21
注 册:2013-11-1
结帖率:57.14%
收藏
已结贴  问题点数:20 回复次数:5 
一元多项式加法函数的程序不知错哪里啦
linklist add(linklist H1,linklist H2){
 linklist H3=NULL;
 lnode *s1,*s2;
 lnode *pre=NULL;
 s1=H1;
 s2=H2;
 pre=H3;
 while(s1!=NULL&&s2!=NULL){
 if(s1->b==s2->b){
     pre=new lnode;
     pre->a=s1->a+s2->a;
     pre->b=s1->b;
     pre=pre->next;
     s1=s1->next;
     s2=s2->next;
 }
 else if(s1->b<s2->b){
     pre=new lnode;
     pre->a=s1->a;
     pre->b=s1->b;
     s1=s1->next;
     pre=pre->next;
 }
 else
 {
     pre=new lnode;
     pre->a=s2->a;
     pre->b=s2->b;
     pre=pre->next;
     s2=s2->next;

  }
 }
 while(s1!=NULL||s2!=NULL){
     if(s1!=NULL){
     pre=new lnode;
     pre=s1;
     }
     else{
     pre=new lnode;
     pre=s2;
   }
 }
return H3;
}
搜索更多相关主题的帖子: 多项式 
2013-11-21 14:27
qunxingw
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:24
帖 子:1676
专家分:7295
注 册:2011-6-30
收藏
得分:20 
while(s1!=NULL||s2!=NULL){
     if(s1!=NULL){
     pre=new lnode;
     pre=s1;
     }
     else{
     pre=new lnode;
     pre=s2;
   }
}
因为你又重新申请了指针结点,所有s1,s2应释放掉。而以上段申请的结点又不够。

www.qunxingw.wang
2013-11-22 16:59
泡vs泡happy
Rank: 2
等 级:论坛游民
帖 子:30
专家分:21
注 册:2013-11-1
收藏
得分:0 
回复 2楼 qunxingw
不好意思,没太明白,能不能帮忙改一下,加以说明,万分感谢
2013-11-23 17:16
qunxingw
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:24
帖 子:1676
专家分:7295
注 册:2011-6-30
收藏
得分:0 
代码贴全调试下

www.qunxingw.wang
2013-11-23 20:33
泡vs泡happy
Rank: 2
等 级:论坛游民
帖 子:30
专家分:21
注 册:2013-11-1
收藏
得分:0 
回复 4楼 qunxingw
我是在vs2008里弄的,麻烦你啦
#include<iostream>
#include<cmath>
using namespace std;
typedef struct node{
   float a;
   int b;
   struct node *next;

}lnode,*linklist;



linklist creat_linklist(linklist H,int k){
  
  lnode *p,*r,*s;
  
  H=r=NULL;
 
 for(int i=1;i<=k;i++){
   
    p=new lnode;
    if(!p){cout<<"分配空间错误!"<<endl; exit(1);}
    cout<<"请输入第"<<i<<"项"<<"系数";
    cin>>p->a;
   
    cout<<"请输入第"<<i<<"项"<<"指数";
    cin>>p->b;
    cout<<endl;
    if(H==NULL){
        H=p;
   
    }
    else{
        r->next=p;
   
    }
    r=p;
    }
 s=H;
 for(int i=1;i<=k;i++){
     
   
    if(i>1&&s->a>0){
         cout<<"+"<<s->a<<"x^"<<s->b;
     }
   
    else
        cout<<s->a<<"x^"<<s->b;
     s=s->next;

 }

 cout<<endl;

return H;

}
void output(linklist H){
   
lnode *s=NULL;
s=H;

while(s){

    if(s!=H&&s->a>0)
        cout<<"+"<<s->a<<"x^"<<s->b;
    else
        cout<<s->a<<"x^"<<s->b;
    s=s->next;
   
}

}

linklist add(linklist H1,linklist H2){
 linklist H3=NULL;
 lnode *s1,*s2;
 lnode *pre=NULL;
 s1=H1;
 s2=H2;
 pre=H3;
 while(s1!=NULL&&s2!=NULL){
 if(s1->b==s2->b){
     pre=new lnode;
     pre->a=s1->a+s2->a;
     pre->b=s1->b;
     pre=pre->next;
     s1=s1->next;
     s2=s2->next;
 }
 else if(s1->b<s2->b){
     pre=new lnode;
     pre->a=s1->a;
     pre->b=s1->b;
     s1=s1->next;
     pre=pre->next;
 }
 else
 {
     pre=new lnode;
     pre->a=s2->a;
     pre->b=s2->b;
     pre=pre->next;
     s2=s2->next;

  }
 }
 while(s1!=NULL||s2!=NULL){
     if(s1!=NULL){
     pre=new lnode;
     pre=s1;
     }
     else{
     pre=new lnode;
     pre=s2;
     
     }
     
 }

 cout<<pre->a<<endl;
 return H3;
}
  
int main(){
linklist H1=NULL,H2=NULL,H3=NULL;
int m,n;
   
 cout<<"请输入多项式a的项数";
 cin>>m;
 creat_linklist(H1,m);
 cout<<"请输入多项式b的项数";
 cin>>n;
 creat_linklist(H2,n);
 add(H1,H2);
 cout<<"相加后的结果为:";
 output(H3);
return 0;
}
2013-11-24 09:21
qunxingw
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:24
帖 子:1676
专家分:7295
注 册:2011-6-30
收藏
得分:0 
程序代码:
linklist add(linklist H1,linklist H2){
linklist H3=NULL;
lnode *s1,*s2;
lnode *pre=NULL;
s1=H1;
s2=H2;
pre=H3;
while(s1!=NULL&&s2!=NULL){
if(s1->b==s2->b){
     pre=new lnode;
     pre->a=s1->a+s2->a;
     pre->b=s1->b;
     pre=pre->next;//delete s1,s2
     s1=s1->next;
     s2=s2->next;
}
else if(s1->b<s2->b){
    // pre=new lnode;//直接利用原结点
     pre->a=s1->a;
     pre->b=s1->b;
     s1=s1->next;
     pre=pre->next;
}
else
{
    // pre=new lnode;//直接利用原结点
     pre->a=s2->a;
     pre->b=s2->b;
     pre=pre->next;
     s2=s2->next;

  }
}
while(s1!=NULL||s2!=NULL){
     if(s1!=NULL){
    // pre=new lnode;//直接利用原结点
     pre=s1;
     }
     else{
    // pre=new lnode;//直接利用原结点
     pre=s2;
    
     }
    
}


//cout<<pre->a<<endl;//不知你的意思
return H3;
}

 
int main(){
linklist H1=NULL,H2=NULL,H3=NULL;
int m,n;
   
cout<<"请输入多项式a的项数";
cin>>m;
creat_linklist(H1,m);
output(H1);//
cout<<"请输入多项式b的项数";
cin>>n;
creat_linklist(H2,n);
output(H2);//
H3=add(H1,H2);//此H3非add函数内的H3
cout<<"相加后的结果为:\n";
output(H3);
return 0;
void output(linklist H)此函数还有问题。

www.qunxingw.wang
2013-11-24 15:30
快速回复:一元多项式加法函数的程序不知错哪里啦
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014363 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved