一元多项式的相加

原创 2018年04月15日 10:58:30
    struct PolyNode
{
	int coef;
	int expon;
	struct PolyNode* link;
};
typedef struct PolyNode* Polynomial;
Polynomial P1, P2,PS;
int Compare(int e1, int e2)
{
	if (e1 > e2)
		return 1;
	else if (e2 < e2)
		return -1;
	else if (e2 == e1)
		return 0;
}
void Attach(int c, int e, Polynomial *PRear)
{
	Polynomial P;
	P = (Polynomial)malloc(sizeof(struct PolyNode));
	P->coef = c;
	P->expon = e;
	P->link = NULL;
	(*PRear)->link = P;
	(*PRear) = P;
}
Polynomial ReadPoly()
{
	Polynomial P,Rear,t;
	int c, e, N;
	printf("请输入有多少项:\n");
	scanf("%d", &N);
	P = (Polynomial)malloc(sizeof(struct PolyNode));
	P->link = NULL;
	Rear = P;
	printf("请输入每一项的系数,和指数用空格隔开:\n");
	while (N--)
	{
		scanf("%d %d", &c, &e);
		Attach(c, e, &Rear);
	}
	t = P; P = P->link; free(t);
	return P;
}

Polynomial Add(Polynomial P1, Polynomial P2)
{
	Polynomial front, rear, temp;
	int sum;
	rear = (Polynomial)malloc(sizeof(struct PolyNode));
	front = rear;
	while (P1&&P2)
	{
		switch (Compare(P1->expon, P2->expon))
		{
		case1:
		  {
			Attach(P1->coef, P1->expon, &rear);
			P1 = P1->link;
			break;
		  }
		case -1:
		  {
			Attach(P2->coef, P2->expon, &rear);
			P2 = P2->link;
			break;
		  }
		case 0:
		  {
				  sum = P1->coef + P2->coef;
				  if (sum)Attach(sum, P1->expon, &rear);
				  P1 = P1->link;
				  P2 = P2->link;
				  break;
		  }
		}
	}
	for (; P1;P1=P1->link)
		Attach(P1->coef,P1->expon,&rear);

	for (; P2;P2=P2->link)
		Attach(P2->coef,P2->expon,&rear);
	rear->link = NULL;
	temp = front;
	front = front->link;
	free(temp);
	return front;
}
void PrintPoly(Polynomial P)
{
	int flag = 0;
	if (!P){ printf("0\n"); return; };
	while (P)
	{
		if (flag == 0)
			flag = 1;
		else
			printf(" ");
		printf("%d %d", P->coef, P->expon);
		P = P->link;
	}
}
int main() 
{   
        P1 = ReadPoly();
	P2 = ReadPoly();
	PS = Add(P1, P2);
	PrintPoly(PS);
        return 0;
}

版权声明: https://blog.csdn.net/qq_41750725/article/details/79947419

两个一元多项式相加

程序运行结果 # include # include struct node { int exp; float coef; struct node *next; /*指向结构体指针*/ }; ...
  • qjt19950610
  • qjt19950610
  • 2015-08-06 10:35:00
  • 1707

一元多项式的表示和相加

一元多项式的表示和相加是数据结构(C语言)中的一个简单的问题,这里我们用C++的一些东西来实现它。(简洁版)首先是表示多项式,多项式有一些列的单项组成,每一项都有系数和指数两个量,考虑到多项式的长度和...
  • RegretPain
  • RegretPain
  • 2016-11-24 11:07:31
  • 1755

数据结构之一元多项式相加

问题 采用链式存储结构,将两个线性链表表示的一元多项式相加,并输出。 算法设计 1、程序结构设计 1)数据结构  typedef struct node { floatcoef;...
  • johnWcheung
  • johnWcheung
  • 2016-03-06 23:04:22
  • 8115

数据结构(12)线性表之C++实现一元多项式相加

导言 一元多项式表现形式 部分算法描述 具体实现代码 代码实现第一种 第二种代码的实现仅链表存储形式实现导言上篇文章,我们说明了一元多项式相加采取了什么形式和抽象定义数据类型定义以及实现一元多项式相加...
  • YuYunTan
  • YuYunTan
  • 2016-03-17 11:24:57
  • 5082

数据结构(c语言)一元多项式的表示相加级实现

  • 2014年10月24日 12:23
  • 3KB
  • 下载

【实验】一元多项式的相加与相乘

数据结构上机实验。 实验要求: 根据所给的一元多项式相加的程序,写出一元多项式相乘的程序并调试通过。 注意: 1、最后得到的一元多项式采用两种输出格式,即数字格式和一般格式。 ...
  • u013487796
  • u013487796
  • 2015-10-11 11:25:15
  • 1648

Polynomial 一元多项式的表示及相加 (线性链表实现 严蔚敏版)

1、贴代码: #include #include using namespace std; struct Node { double coef; int expn; Node *next...
  • Justme0
  • Justme0
  • 2012-04-15 22:58:50
  • 8449

一元多项式相加的算法和C++实现

利用顺序表的链式存储实现一元多项式的加法
  • lfeng_coding
  • lfeng_coding
  • 2015-08-13 15:53:08
  • 5725
收藏助手
不良信息举报
您举报文章:一元多项式的相加
举报原因:
原因补充:

(最多只允许输入30个字)