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

📄 c.txt.txt

📁 数据结构一元多项式的实现
💻 TXT
字号:
一元多项式类定义与实现
#ifndef Polynomial_H

#define Polynomial_H


#include "List.h"


class Term

{

public:

       int coef;

       int exp;

       Term() : coef(0), exp(0) {}

       Term(int c, int e) : coef(c), exp(e) {}

       Term(int c) : coef(c), exp(0) {}

};


class Polynomial : List<Term>

{

public:

       void Input()

       {

              cout << endl << "输入多项式的各项系数和指数";

              cout << endl << "注意:请按降序输入各项,输入系数0表示结束" << endl;

              int coef, exp;

              for(int i = 1; ; i++)

              {

                     cout << "第" << i << "项的系数:";

                     cin >> coef;

                     if (coef)

                     {

                            cout << "指数:";

                            cin >> exp;

                            Term term(coef, exp);

                            Insert(term);

                     }

                     else break;

              }

       }


       void Print()

       {

              cout << endl;

              First();

              if (!IsEmpty())

              {

                     Term *p = Next();

                     cout << p->coef;

                     if (p->exp) 

                     {

                            cout << "x";

                            if (p->exp != 1) cout << "^" << p->exp;

                     }

                     

                     while (Next() != NULL)

                     {

                            p = Get();

                            if (p->coef > 0) cout << "+";

                            cout << p->coef;

                            if (p->exp)

                            {

                                   cout << "x";

                                   if (p->exp != 1) cout << "^" << p->exp;

                            }

                     }

              }

              cout << endl;

       }




friend void PolyAdd (Polynomial &polyA, Polynomial &polyB)

{

       Node<Term> *pA, *pB;

       polyA.First();polyB.First();

       pA = polyA.pNext();pB = polyB.pNext();

       

       while (pA != NULL && pB !=NULL)

       {

              if (pA->data.exp == pB->data.exp)

              {

                     pA->data.coef = pA->data.coef + pB->data.coef;

                     polyB.Remove();

                     if (!pA->data.coef) polyA.Remove();

                     else polyA.pNext();

              }


              else

              {

                     if (pA->data.exp > pB->data.exp)

                     {

                            polyB.pRemove();

                            polyA.InsertBefore(pB);

                     }


                     else if (pA->data.exp < pB->data.exp) polyA.pNext();                     

              }

       pA = polyA.pGet();pB = polyB.pGet();

       }


       if (pA == NULL) 

       {

              polyA.pGetPrior()->link = pB;

              polyB.pGetPrior()->link = NULL;

       }

}      



};


#endif

⌨️ 快捷键说明

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