CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

怎样自定义抽象数据类型实现多项式的加法?

楼主youwuxian1213(冬瓜)2005-04-01 20:39:50 在 C/C++ / C语言 提问

 
        我是C语言新手,近日老师发了一道上机题:  
         
              自定义抽象数据类型,用以实现多项式的相加运算。要求用链式存储结构。  
   
    请大家帮忙!!! 问题点数:11、回复次数:4Top

1 楼szws(克米帅)回复于 2005-04-01 21:02:52 得分 11

用类做的,不知你们学了没有  
  #include<iostream.h>  
  class   Term  
  {  
  public:  
  Term(int   c,int   e);  
  Term(int   c,int   e,Term*   nxt);  
  Term*   InsertAfter(int   c,int   e);  
  private:  
  int   coef;  
  int   exp;  
  Term   *link;  
  friend   ostream   &operator<<(ostream&,const   Term&);  
  friend   class   Polynominal;  
  };  
   
  Term::Term(int   c,int   e):coef(c),exp(e)  
  {  
  link=0;  
  }  
   
  Term::Term(int   c,int   e,Term*   nxt):coef(c),exp(e)  
  {  
  link=nxt;  
  }  
   
  Term   *   Term::InsertAfter(int   c,   int   e)  
  {  
  link=new   Term(c,e,link);  
          return   link;  
  }  
   
  ostream   &operator<<(ostream&   out,   const   Term&   val)  
  {  
  if(val.coef==0)return   out;  
  out<<val.coef;  
  switch(val.exp)  
  {  
      case   0:break;  
              case   1:out<<"X";break;  
              default:out<<"X~"<<val.exp;break;  
  }  
  return   out;  
  }  
   
  class   Polynominal  
  {  
  public:  
  Polynominal();  
  void   AddTerm(istream   &   in);  
  void   Output(ostream   &   out)const;  
  void   PolyAdd(Polynominal&   r);  
  private:  
  Term   *   theList;  
  friend   ostream   &operator<<(ostream   &,const   Polynominal   &);  
  friend   istream&   operator>>(istream   &,Polynominal   &);  
  friend   Polynominal   operator+(Polynominal   &,Polynominal   &);  
  };  
   
  Polynominal::Polynominal()  
  {  
    theList=new   Term(0,-1);  
    theList->link=theList;  
   
  }  
   
  void   Polynominal::AddTerm(istream   &in)  
  {  
  Term   *   q=theList;  
  int   c,e;  
  for(;;)  
  {  
      cout<<"Input   a   term(coef,exp):\n"<<endl;  
      in>>c>>e;  
      if(e<0)break;  
      q=q->InsertAfter(c,e);  
  }  
  }  
   
  void   Polynominal::Output(ostream   &   out)const  
  {  
      int   first=1;Term   *p=theList->link;  
      cout<<"The   Polynominal   is:\n"<<endl;  
      for(;p!=theList;p=p->link)  
      {  
      if(!first&&(p->coef>0))out<<'+';first=0;  
      out<<*p;  
      }  
      cout<<"\n"<<endl;  
  }  
   
  void   Polynominal::PolyAdd(Polynominal   &   r)  
  {  
      Term   *q,*q1=theList,*q2,*p;  
      p=r.theList;  
      q=q1->link;p=p->link;  
      while(p->exp>=0)  
      {  
            while(p->exp<q->exp)  
    {  
        q1=q;q=q->link;  
    }  
    if(p->exp==q->exp)  
    {  
        q->coef=q->coef+p->coef;  
        if(q->coef==0)  
        {  
              q2=q;q1->link=q->link;  
      q=q->link;delete(q2);  
      p=p->link;  
        }  
        else  
        {  
              q1=q;q=q->link;p=p->link;  
   
        }  
    }  
    else    
    {  
        q1=q->InsertAfter(p->coef,p->exp);  
        p=p->link;  
    }  
      }  
   
  }  
  ostream&operator<<(ostream   &out,const   Polynominal   &x)  
  {  
    x.Output(out);  
    return   out;  
  }  
   
  istream&operator>>(istream   &in,   Polynominal   &x)  
  {  
      x.AddTerm(in);  
      return   in;  
  }  
   
  Polynominal   operator   +(Polynominal   &a,Polynominal   &b)  
  {  
      a.PolyAdd(b);  
      return   a;  
  }  
  void   main()  
  {  
      Polynominal   p,q;  
      cin>>p;cout<<p;  
      cin>>q;cout<<q;  
      q=q+p;cout<<q;  
   
  }Top

2 楼tgz501(长夜雨亭)回复于 2005-04-02 17:40:26 得分 0

上面的不是C语言把,不要找点东西就向上粘  
  typedef   struct   a  
  {  
  ....数据  
  struct   a   *next;  
  }data;  
  main()  
  {  
      data   a;  
      a   =   (data   *)malloc(sizeof(data));  
      然后多定义几个,可以进行运算  
  }Top

3 楼szws(克米帅)回复于 2005-04-02 19:52:44 得分 0

这个绝对是我自己写的,从电脑里找出来的  
  而且我说明了是用类写的,当然不是用c写的,难道c里有“类”???  
   
   
  其实有了思想,用什么写都一样Top

4 楼youwuxian1213(冬瓜)回复于 2005-04-04 08:53:57 得分 0

 
   
   
      高手,可是我们没有学习类啊!!!!  
          我看不懂啊!!!!  
  Top

相关问题

  • 关于多项式加法有莫名奇妙得错误!
  • 求多项式:
  • 求教多项式相加
  • 请大家帮忙,关于自定义控件继承于抽象类得问题!
  • MessageBox自定义???
  • 自定义tag
  • crc校验的生成多项式
  • 多项式相乘的问题
  • 100分!!一元多项式的除法!!
  • 实现多元多项式类

关键词

  • exp
  • polynominal
  • coef
  • thelist
  • term
  • insertafter
  • link
  • istream
  • ostream
  • cout

得分解答快速导航

  • 帖主:youwuxian1213
  • szws

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo