標(biāo)題: 貼上我寫的多項(xiàng)式相加的代碼 [打印本頁(yè)]
作者: liuyang 時(shí)間: 2012-1-14 03:52
標(biāo)題: 貼上我寫的多項(xiàng)式相加的代碼
呵呵,自己寫的與調(diào)試;1個(gè)半小時(shí)呢!
#include<stdio.h>
#include<malloc.h>
/***y=5x^9+3x^4+6x+-1****/
/***y=12x^12+-3x^4+2x+3*****/
/** 求Y的直 ***/
typedef struct list1 {
int wdata; //系數(shù)
int exp; //指數(shù)
struct list1* next;
}cl;
void creat_l(cl <)
{
cl *p,*q;
int a,b,n;
p=<
// scanf("%d%d",&a,&b);
for(n=4;n>0;--n)
{
q=(cl *)malloc(sizeof(cl));
scanf("%d%d",&a,&b);
q->wdata =a;
q->exp=b;
p->next=q;
p=q;
}
p->next=NULL;
}
void padd(cl <1,cl <2) //相加
{
cl *p,*q,*fp,*dp,*fq;
int sum;
fp =<1;
fq=<2;
p=lt1.next;
q=lt2.next;
while(p&&q)
{
if (p->exp==q->exp)
{
sum =p->wdata+q->wdata;
if(sum){
p->wdata=sum;
fp=p;
}else
{
fp->next=p->next;
free(p);
}
p=fp->next;
dp=q;
q=q->next;
free(dp);
}else
{
if (p->exp>q->exp)
{
// fp->next=p;
fp=p;
p=p->next;
}else
{
fp->next=q; //
fp=q; //當(dāng)前指針為q
q=q->next; //q下移一個(gè)
fp->next=p; //當(dāng)前指針下個(gè)節(jié)點(diǎn)是p
}
}
}
if(q)fp->next=q;
// free(fq); //釋放表頭
}
void print_l(cl <) //打印
{
cl *p;
p=lt.next;
while(p->next)
{
printf("%dX^%d+",p->wdata,p->exp);
p=p->next;
}
printf("%dX",p->wdata);
}
int main()
{
cl c1,c2;
creat_l(c1);
creat_l(c2);
padd(c1,c2);
print_l(c1);
return 0;
}
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |