多项式相加

每日一题
在这里插入图片描述
用之前创建链表的方法!!!

#include<stdio.h>
#include<stdlib.h>
struct Polynode1
{
	int coef;
	int expon;
	struct Polynode1* pNext;
};//定义一个结构体;
int icount=0;
struct Polynode1* Creat()
{
	struct Polynode1* pHead=NULL;
	struct Polynode1* pEnd,*pNew;
	icount=0;
	//动态分配空间
	pEnd=pNew=(struct Polynode1*)malloc(sizeof(struct Polynode1));
	//输入数据
	printf("please first enter coef ,then expon\n");
	scanf("%d",&pNew->coef);
	scanf("%d",&pNew->expon);
	while(pNew->coef!=-1&&pNew->expon!=-1)//退出条件
	{
		icount++;
		if(icount==1){//第一个节点
			pNew->pNext=pHead;//指针指向建议动笔画一画
			pEnd=pNew;
			pHead=pNew;
		}
		else{//之后的节点
			pNew->pNext=NULL;
			pEnd->pNext=pNew;
			pEnd=pNew;
		}
		pNew=(struct Polynode1*)malloc(sizeof(struct Polynode1));
		printf("please %d enter coef ,then expon\n",icount);
		scanf("%d",&pNew->coef);
		scanf("%d",&pNew->expon);
	}
	free(pNew);
	return pHead;//返回头指针,头指针指向第一个节点
}
void Print(struct Polynode1* pHead)
{
	struct Polynode1* pTemp;
	int ilndex=1;
	
	printf("---the List has %d members:---\n",icount);
	putchar('\n');
	pTemp=pHead;
	printf("the P(x1) is:");
	while(pTemp->pNext!=NULL)
	{
		//printf("the NO%d member is:\n",ilndex);
		//printf("the name is :%d\n",pTemp->coef);
		//printf("the number is %d\n",pTemp->expon);
		printf("%d*x^%d+",pTemp->coef,pTemp->expon);
		//putchar('\n');
		pTemp=pTemp->pNext;//指向下一个节点
		ilndex++;
	}
	printf("%d*x^%d",pTemp->coef,pTemp->expon);
}
struct Polynode2
{
	int coef;
	int expon;
	struct Polynode2* pNext;
};//定义一个结构体;

int icount1=0;
struct Polynode2* Creat2()
{
	struct Polynode2* pHead=NULL;
	struct Polynode2* pEnd,*pNew;
	icount1=0;
	//动态分配空间
	pEnd=pNew=(struct Polynode2*)malloc(sizeof(struct Polynode2));
	//输入数据
	printf("\nplease Polynode2 first enter coef ,then expon\n");
	scanf("%d",&pNew->coef);
	scanf("%d",&pNew->expon);
	while(pNew->coef!=-1&&pNew->expon!=-1)//退出条件
	{
		icount1++;
		if(icount1==1){//第一个节点
			pNew->pNext=pHead;//指针指向建议动笔画一画
			pEnd=pNew;
			pHead=pNew;
		}
		else{//之后的节点
			pNew->pNext=NULL;
			pEnd->pNext=pNew;
			pEnd=pNew;
		}
		pNew=(struct Polynode2*)malloc(sizeof(struct Polynode2));
		printf("please %d enter coef ,then expon\n",icount1);
		scanf("%d",&pNew->coef);
		scanf("%d",&pNew->expon);
	}
	free(pNew);
	return pHead;//返回头指针,头指针指向第一个节点
}
void Print(struct Polynode2* pHead)
{
	struct Polynode2* pTemp;
	int ilndex=1;
	
	printf("---the List has %d members:---\n",icount1);
	putchar('\n');
	pTemp=pHead;
	printf("the P(x2) is:");
	while(pTemp->pNext!=NULL)
	{
		//printf("the NO%d member is:\n",ilndex);
		//printf("the name is :%d\n",pTemp->coef);
		//printf("the number is %d\n",pTemp->expon);
		printf("%d*x^%d+",pTemp->coef,pTemp->expon);
		//putchar('\n');
		pTemp=pTemp->pNext;//指向下一个节点
		ilndex++;
	}
	printf("%d*x^%d",pTemp->coef,pTemp->expon);
}
int main()
{
	struct Polynode1* pHead1;
	pHead1=Creat();
	Print(pHead1);
	struct Polynode2* pHead2;
	pHead2=Creat2();
	Print(pHead2);
	printf("\n");
	while(pHead1!=NULL&&pHead2!=NULL){
		if(pHead1->expon>pHead2->expon){
			printf("%d*x^%d ",pHead1->coef,pHead1->expon);
			pHead1=pHead1->pNext;
		}
		else if(pHead1->expon<pHead2->expon){
			printf("%d*x^%d ",pHead2->coef,pHead2->expon);
			pHead2=pHead2->pNext;
		}
		else if(pHead1->expon==pHead2->expon){
			printf("%d*x^%d ",pHead2->coef+pHead1->coef,pHead2->expon);
			pHead1=pHead1->pNext;
			pHead2=pHead2->pNext;
		}
	}
	if(pHead1==NULL){
		while(pHead2!=NULL){
			printf("%d*x^%d ",pHead2->coef,pHead2->expon);
			pHead2=pHead2->pNext;
		}
	}
	else if(pHead2==NULL){
		while(pHead1!=NULL){
			printf("%d*x^%d ",pHead1->coef,pHead1->expon);
			pHead1=pHead1->pNext;
		}
	}
	
	return 0;	
} 

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值