每日一题
用之前创建链表的方法!!!
#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;
}