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

📄 poly.h

📁 数据结构中的链表类实现多项式的相加 用C++实现!
💻 H
字号:
    //文件名Poly.h
    #include <iostream>
    using namespace std;
    //定义结点类型
	struct node
	{ int  exp;       //指数为整型
	  double  coef;   //系数为双精度型
	  node *next;     //指针域
	};
	//多项式循环链表类
    class  Poly 
    { private:  //数据成员
	    node *head;     //循环链表头指针
	  public:   //成员函数
		Poly();    //构造函数,建立空多项式链表
		void ins_Poly(); //键盘输入多项式链表
		void prt_Poly();  //输出多项式链表
		Poly operator +(Poly &); //多项式相加
    };

    //构造函数,建立空多项式链表
	Poly::Poly()
	{ node *p;
      p=new node;     //申请一个表头结点
	  p->exp=-1; p->next=p; 
	  head=p; 
	  return; 
	}
	
	//键盘输入多项式链表
	void Poly::ins_Poly() 
    { node *p,*k;
      int e; 
	  double c;
      k=head;    //记住多项式链尾
	  cout <<"输入:系数<空格>指数。输入指数-1结束!" <<endl;
	  cin >>c >>e;
	  while (e>=0)
	  { p=new node;  //申请一个新结点
	    p->exp=e; p->coef=c;  //填入指数与系数
		p->next=head;    //新结点链到临时多项式链尾
		k->next=p;
		k=p;     //记住多项式链尾
        cin >>c >>e;
      }
      return;
	}

	

	

    //输出多项式链表
    void Poly::prt_Poly()
	{ node *k;
	  if (head->next==head)
		  cout <<"空表" <<endl;
	  k=head->next;
	  while (k!=head)
	  { cout <<"(" <<k->coef <<", " <<k->exp <<")" <<endl;
	    k=k->next;
	  }
	  return;
	}

    //多项式相加
	Poly Poly::operator +(Poly &p2)
	{ Poly p;
      node *k, *q, *m, *n;
	  int e;
	  double c;
	  k=p.head;   //记住和多项式链尾
	  m=head->next;
	  n=p2.head->next;
	  while ((m->exp!=-1)||(n->exp!=-1))
	  { if (m->exp==n->exp)   //两个链表当前结点的指数相等
	       { c=m->coef+n->coef;   //系数相加
             e=m->exp;      //复抄指数
			 m=m->next; n=n->next;
	       }
        else if (m->exp>n->exp)
			{ c=m->coef; e=m->exp;  //复抄链表1中的系数与指数值
		      m=m->next;
		    }
        else
			{ c=n->coef; e=n->exp;  //复抄链表2中的系数与指数值
		      n=n->next;
		    }
        if (c!=0)  //相加后系数不为0
		{ q=new node;  //申请一个新结点
		  q->exp=e; q->coef=c;
		  q->next=p.head; k->next=q;
		  k=q;    //记住和多项式的链尾
		}
	  }
	  return(p);
	}

⌨️ 快捷键说明

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