一元多项式的相加plinknode *add(plinknode *a,plinknode *b){plinknode

问题描述:

一元多项式的相加
plinknode *add(plinknode *a,plinknode *b)
{
plinknode *head,*p1,*p2,*p3,*p4;
p1=a;
head=a;
p3=b->next;
do
{
p2=p1->next;
if(p2->expn>p3->expn)
{
p1->next=p3;
p4=p3->next;
p3->next=p2;
p3=p4;
p1=p1->next;
}
if(p2->expn==p3->expn)
{
p2->coef=p3->coef+p2->coef;
if(p2->coef==0)
{
p1->next==p2->next;
free(p2);
p4=p3;
free(p3);
p3=p4->next;
p2=p1->next;
}
else
{
p4=p3;
free(p3);
p3=p4->next;
}
}
if(p2->expnexpn)
{
p1=p1->next;
p2=p2->next;
}
}while(p1->next!=NULL&&p3!=NULL);
if(p2!=NULL)
{
p3->next=p2;
free(p3);
}
return (head);
}
其中plinknode已定义:
typedef struct student
{
int coef;
int expn;
struct student *next;
}
plinknode;
请知道的告诉下谢谢了
这只是程序的一小段,目的是为了实现a,b多项式的相加
1个回答 分类:综合 2014-11-27

问题解答:

我来补答
#include "stdafx.h"
#include
#include
typedef struct student
{
int coef;
int expn;
struct student *next;
}
plinknode;
plinknode *creat(void)
{
plinknode *head,*p1,*p2,*p3,*p4;
int m,n;
printf("gongyoujiedianshu:");
scanf("%d",&m);
p3=(plinknode *)malloc(sizeof(plinknode));
p3->coef=0;
p3->expn=-1;
p4=p3;
head=p3;
for(n=1;ncoef,&p3->expn);
if(p4->expnexpn)
{
p4->next=p3;
p3->next=NULL;
p4=p4->next;
}
else
{
p1=head;p2=p1->next;
while(p2)
{
if(p2->expn==p3->expn)
{
p2->coef=p2->coef+p3->coef;
free(p3);
if(p2->coef==0)
{
p1->next=p2->next;
free(p2);
if(p2->next==NULL)
{
p4=p1;
}
}
break;
}
if(p2->expn>p3->expn)
{
p1->next=p3;
p3->next=p2;
break;
}
p1=p1->next;
p2=p2->next;
}
}
}
return (head);
}
void print(plinknode *p)
{
plinknode *head;
head=p;
printf("shuchude shi:");
do
{
printf("%d%d\n",head->coef,head->expn);
head=head->next;
}while(head!=NULL);
}
plinknode *add(plinknode *a,plinknode *b)
{
plinknode *head,*p1,*p2,*p3,*p4;
p1=a;
head=a;
p3=b->next;
do
{
p2=p1->next;
if(p2->expn>p3->expn)
{
p1->next=p3;
p4=p3->next;
p3->next=p2;
p3=p4;
p1=p1->next;
}
else if(p2->expn==p3->expn)
{
p2->coef=p3->coef+p2->coef;
if(p2->coef==0)
{
p1->next==p2->next;
free(p2);
p4=p3->next;
free(p3);
p3=p4;
}
else
{
p1=p1->next;
p4=p3->next;
free(p3);
p3=p4;
}
}
else
p1=p1->next;
}while(p1->next!=NULL&&p3!=NULL);
if(p3!=NULL)
{
p2->next=p3;
}
return (head);
}
void main()
{
plinknode *h1,*h2,*h3;
h1=creat();
print(h1);
h2=creat();
print(h2);
h3=add(h1,h2);
print(h3);
}
可以运行,希望对你有帮助
 
 
展开全文阅读
剩余:2000