| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1675 人关注过本帖
标题:我编写了一个关于一元多项式相加的程序
取消只看楼主 加入收藏
夜影
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2005-10-20
收藏
 问题点数:0 回复次数:1 
我编写了一个关于一元多项式相加的程序
//Ò»Ôª¶àÏîʽµÄÏà¼Ó
#include<iostream.h>
#include<stdlib.h>
typedef struct Node
{
 int  coef ,expn;
 struct Node * next;
}Linklist;
void CreatLinklist(Linklist *L,int n)//´´½¨Á´±í
{
 Linklist * head,* pp,*qq;
    int c,e;
 head=L;//Ö¸ÏòÍ·½áµã
 cout<<"Çë°´Ö¸Êý´ÓСµ½´óµÄ˳ÐòÊäÈë¶àÏîʽµÄϵÊýºÍÖ¸Êý:"<<endl;
 for(int i=0;i<n;i++)
 {
  pp=(Linklist*)malloc(sizeof(Linklist));//¶¯Ì¬·ÖÅä´æ´¢¿Õ¼ä
         if(!pp)
    cout<<"allocation failure!"<<endl;
  if(i<1)      
  {   head->next=pp;
   qq=pp;
            cin>>c>>e;
      qq->coef=c;
      qq->expn=e;
  }
  else
  {
  cin>>c>>e;
  pp->coef=c;
  pp->expn=e;
        qq->next=pp;
  qq=pp;
  }
  if(i==n-1)  qq->next=NULL;
 }
}
void OutputLinklist(Linklist * h,int n)//Êä³öÁ´±íÔªËغ¯Êý
{
 for(int i=0;i<n;i++)
 {   
  if(i<1||h->coef<0)
   cout<<h->coef<<"x^"<<h->expn;
  else
         cout<<"+"<<h->coef<<"x^"<<h->expn;
  h=h->next;//²»ÊÇh++
 }
}        
void main()
{
 Linklist A,B,*p,*pp,*q,*qq,*w,*hA,*hB;
    p=hA=&A;
 q=hB=&B;//Ö¸ÏòÍ·½áµã
    int numberA,numberB;//ÿ¸ö¶àÏîʽµÄÏîÊý
 int n=0;
 cout<<"ÇëÊäÈë¶àÏîʽAµÄ¸öÊý£º"<<endl;
 cin>>numberA;
 cout<<"ÇëÊäÈë¶àÏîʽBµÄ¸öÊý£º"<<endl;
 cin>>numberB;
 CreatLinklist(p,numberA);
    CreatLinklist(q,numberB);
 //p++; //´íÎó,Á´±íÖÐÖ¸ÕëÖ¸ÏòÏÂÒ»¸ö½áµã²»ÄÜÕâÑù±íʾ
    //q++;
 p=p->next;//Ö¸ÏòÁ´±íÖеÚÒ»¸ö½áµã
    qq=q=q->next;
 cout<<"¶àÏîʽAΪ:"<<endl<<"A=";
 OutputLinklist(p,numberA);
 cout<<endl;
    cout<<"¶àÏîʽBΪ:"<<endl<<"B=";
 OutputLinklist(q,numberB);
   while(p&&q)
   {
        if(p->expn<q->expn)
  { pp=p;
      p=p->next;
  }
     else if(p->expn==q->expn)
  {
       if(p->coef+q->coef)
    {
      p->coef=p->coef+q->coef;
            pp=p;
      p=p->next;
      qq=q;
      q=q->next;
    }
  }
       else if(p==hA->next&&q==hB->next)
    {   
     q=q->next;
     w=qq;
        qq=hB;
     qq->next=q;
              w->next=p;
     hA->next=w;
     numberA++;
    }
            else
   {
      w=q;
               q=q->next;
               qq->next=q;//´ÓBÁ´±íÖÐɾ³ýwËùÖ¸ÏòµÄ½áµã
      w->next=p;//Á¬ÈëAÁ´±í
         pp->next=w;
      pp=w;
      numberA++;//AÁ´±í¸öÊý×ÔÔö1
   }  
   }
   if(q)//½«BÁ´±íʣϵÄÔªËزåÈëµ½AÁ´±íÖÐ
   {   
    pp->next=q;//pp-nextÖ¸ÏòBÁ´±íʣϵĽáµã
       while(q)
    {  
    q=q->next;
          n++;//BÁ´±íʣϵĽáµã¸öÊý
    }
 numberA+=n;//AÁ´±í½áµãµÄ×ܸöÊý
   }
 cout<<endl;
 p=&A;//ÈÃpÖ¸ÏòÁ´±íÊ×µØÖ·
 p=p->next;
    cout<<"Á½¶àÏîʽµÄºÍΪ:"<<endl<<"A+B=";
    OutputLinklist(p,numberA);
}
搜索更多相关主题的帖子: 多项式 相加 编写 
2005-10-22 10:18
夜影
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2005-10-20
收藏
得分:0 
不好意思,注释忘了转换
2005-10-22 10:37
快速回复:我编写了一个关于一元多项式相加的程序
数据加载中...
 
   



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

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