ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

C语言 一,链表一元多项式

2021-12-27 12:35:02  阅读:174  来源: 互联网

标签:index Head 多项式 Poly next 链表 newp C语言


一,链表一元多项式
题目如下:

自定义一元多项式中的“项”结构,自定义一元多项式的链表结构。
设计函数Add(……),用于实现两个多项式的加法运算。
编写main()函数,分别读入两个多项式的数据,创建两个多项式链表。利用Add等函数,实现两个多项式的加法运算,并输出“多项式之和”的数据。要求按照多项式的幂的降序输出。
————————————————
版权声明:本文为CSDN博主「alyx27」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/alyx27/article/details/121904141

#include <iostream>
#include <fstream>
using namespace std;
struct Poly
{
	int coef;
	int index;
	Poly *next;//多了个next域;
	friend ostream & operator<<(ostream &out, Poly &p)
	{
		return out<<p.coef<<" "<<p.index<<endl;
	}
};
class PolyList
{
	Poly *Head;
public:
	PolyList()
	{
		Head=NULL;
		
		int n; cin>>n;
		for(int i=0; i<n; i++)
		{
			Poly *newp =new Poly;	
			cin>>newp->coef>>newp->index;
			Insert(newp); // 按照指数降序插入*newp;
		}
	}
	// 按照指数降序插入*newp
	void Insert(Poly *newp)
	{
		Poly *prev=NULL, *p=Head;
		for(; p!=NULL; prev=p,p=p->next)
			if(p->index <= newp->index)
				break;
		if(p!=NULL && p->index==newp->index)
		{
			// 同类项;
			p->coef += newp->coef;
			delete newp;
			if(p->coef==0)
			{
				// 删除*p   删除*prev的后继结点;
				if(prev==NULL)
					Head      =p->next;
				else
					prev->next=p->next;
				delete p;
			}
		}
		else
		{
			// 在*p之前插入*newp  在*prev之后插入*newp
			newp->next=p; 
			if(prev==NULL)
				Head      =newp;
			else
				prev->next=newp;
		}
	}
	~PolyList()
	{//释放头节点;
		while(Head!=NULL)
			RemoveHead();
	}
	void RemoveHead()
	{
		Poly *p=Head;
		Head=Head->next;
		delete p;
	}
	void Add(PolyList &L)
	{
		for(Poly *p=L.Head; p!=NULL; p=p->next)
		{
			Poly *newp =new Poly;	
			newp->coef=p->coef;  newp->index=p->index;
			Insert(newp);
		}
	}
	void Output()
	{
		for(Poly *p=Head; p!=NULL; p=p->next)
			cout<<*p;
		cout<<endl;
	}
};
int main()
{
	PolyList  L1;  
	PolyList  L2;
	L1.Add(L2);				 L1.Output();
	return 0;
}

标签:index,Head,多项式,Poly,next,链表,newp,C语言
来源: https://blog.csdn.net/laocooon/article/details/122169254

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有