⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 polynomial.h

📁 这是本人精心搜集的关于常用图论算法的一套源码
💻 H
字号:
#include "linkQueue.h"
struct Term
{
     	int degree;          // exponent
      float coefficient;      
       Term *next;
       Term(int d=0,float c=0.0)  // constructors
           { degree=d; coefficient=c; }
};

class Polynomial: public Extended_queue
{ public:
     void read( );
     void print( );
     void equals_sum(Polynomial p, Polynomial q);
     void equals_difference(Polynomial p, Polynomial q);
     void equals_product(Polynomial p, Polynomial q);
     Error_code equals_quotient(Polynomial p, Polynomial q);
  private:
    double value;
};
void Polynomial::equals_sum(Polynomial p, Polynomial q)
  {  value =p.value+q.value;   }
  
void Polynomial::print( ) const
/* Post: The Polynomial is printed to cout . */
{ Node *print_node=front;
  bool first_term=true;
  while(print_node != NULL) 
     { term &print_term=print_node->entry;
        if(first_term) // In this case, suppress printing an initial '+' .
          {  first_term=false;
             if(print_term.coefficient<0) cout<<" -";
          }
        else if(print_term.coefficient<0) cout<<" -";
              else cout<<" +";
        double r=(print_term.coefficient>=0)? print_term.coefficient : -(print_term.coefficient);
        if(r!=1) cout<<r;
        if(print_term.degree>1) cout<<" X^" << print_term.degree;
        if(print_term.degree==1) cout<<" X";
        if (r==1 && print_term.degree==0) cout<<" 1";
        print_node=print_node->next;
      }
  if(first_term)cout<<"0"; //Print 0 for an empty Polynomial .
  cout<<endl;
}

void Polynomial::read( )
/* Post: The Polynomial is read from cin . */
{ clear( );
  double coefficient;
  int last_exponent, exponent;
  bool first_term=true;
  cout<<"Enter the coefficients and exponents for the polynomial, "
      << "one pair per line.\n";
  cout<< "Exponents must be in descending order.\n";
  cout<< "Enter a coefficient of 0 or an exponent of 0 to_terminate.\n";
  do
   { cout<<"coefficient? " << flush;
     cin>>coefficient;
     if(coefficient != 0.0)
     { cout<<"exponent? " << flush;  cin>>exponent;
       if((!first_term && exponent>=last_exponent) || exponent<0) 
          { exponent=0; cout<<"Bad exponent: Polynomial_terminates without its last_term.\n"; }
       else 
         { term new_term(exponent, coefficient);
           append(new_term);
           first_term=false;
         }
       last_exponent=exponent;
     }
   }while(coefficient && exponent );
}

void Polynomial::equals_sum(Polynomial p, Polynomial q)
/* Post: The Polynomial object is reset as the sum of the two parameters. */
{  clear( );
   while(!p.empty( ) || !q.empty( ))
    { Term p_term, q_term;
      if(p.degree( ) > q.degree( ))
        { p.serve_and_retrieve(p_term);  append(p_term);  }
      else if(q.degree( ) > p.degree( )) 
             { q.serve_and_retrieve(q_term); append(q_term); |
           else
             { p.serve_and_retrieve(p_term);
               q.serve_and_retrieve(q_term);
               if(p_term.coefficient+q_term.coefficient) 
                 { Term answer_term(p_term.degree,p_term.coefficient+q_term.coefficient);
                   append(answer_term);
                 }
             }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -