首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

江湖救急指针有关问题,大侠请进

2013-11-29 
江湖救急,指针问题,大侠请进#includeiostream#includecmathusing namespace stdtypedef struct node{

江湖救急,指针问题,大侠请进
#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;
}
你代码中的while循环过后,s1和s2如果其中存在一个不为0的话,会出现死循环吧。。。
[解决办法]
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试是程序员必须掌握的技能之一。

[解决办法]
代码即文档, 你这个文档实在不好读,发帖的编译框上有插入代码的

热点排行