这问题我想了很久, C++或者C语言都可以,希望有才之人,能在五天内,帮我完成,谢谢啦!!!
答案:4 悬赏:0 手机版
解决时间 2021-04-04 05:53
- 提问者网友:我们很暧昧
- 2021-04-04 00:02
这问题我想了很久, C++或者C语言都可以,希望有才之人,能在五天内,帮我完成,谢谢啦!!!
最佳答案
- 五星知识达人网友:患得患失的劫
- 2021-04-04 00:32
#include
#include
typedef struct
{
float coef;//系数
int expn;//指数
}
ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}
LNode,*LinkList;
LinkList InitList()//创建链表
{
LinkList L;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
return(L);
}
void Creat(LinkList L,ElemType x)//创建多项式
{
LinkList s,p;
s=(LinkList)malloc(sizeof(LNode));
s->data=x;
p=L;
while(p->next)
p=p->next;
s->next=NULL;
p->next=s;
}
void Insert(LinkList L,LNode p)//插入链表
{
LinkList q,pc;
pc=(LinkList)malloc(sizeof(LNode));
*pc=p;
q=L;
while(q->next)
q=q->next;
pc->next=q->next;
q->next=pc;
}
void AddPolyn(LinkList pa,LinkList pb,LinkList pc)//多项式求和
{
LinkList qa,qb;
LNode qc;
float sum;
int a,b;
qa=pa->next;
qb=pb->next;
while(qa&&qb)
{
a=qa->data.expn;
b=qb->data.expn;;
if(a {
Insert(pc,*qa);
qa=qa->next;
}
if(a==b)
{
sum=qa->data.coef+qb->data.coef;
if(sum!=0)
{
qc=*qa;
qc.data.coef=sum;
Insert(pc,qc);
qa=qa->next;
qb=qb->next;
}
else
{
qa=qa->next;
qb=qb->next;
}
}
if(a>b)
{
Insert(pc,*qb);
qb=qb->next;
}
while(qa)
{
Insert(pc,*qa);
qa=qa->next;
}
while(qb)
{
Insert(pc,*qb);
qb=qb->next;
}
}
}
void Plus(LinkList pa,LinkList pb,LinkList pc)//多项式的差
{
LinkList qb;
qb=pb->next;
while(qb)
{
qb->data.coef=-(qb->data.coef);
qb=qb->next;
}
AddPolyn(pa,pb,pc);
}
void Print(LinkList L)//输出多项式
{
LinkList p;
p=L->next;
while(p->next)
{
printf("%fx^%d+",p->data.coef,p->data.expn);
p=p->next;
}
printf("%fx^%d",p->data.coef,p->data.expn);
}
void main()//主函数
{
LinkList La,Lb,Lc,Ld;ElemType c;
int a,i;
La=InitList();
Lb=InitList();
Lc=InitList();
Ld=InitList();
printf("输入La的项数:");
scanf("%d",&a);
for(i=0;i {
printf("输入La第%d项系数和指数:",i+1);
scanf("%f%d",&c.coef,&c.expn);
Creat(La,c);
}
printf("输入Lb的项数:");
scanf("%d",&a);
for(i=0;i {
printf("输入Lb第%d项系数和指数:",i+1);
scanf("%f%d",&c.coef,&c.expn);
Creat(Lb,c);
}
printf("La为");
printf("\n");
Print(La);
printf("\n");
printf("Lb为");
printf("\n");
Print(Lb);
printf("\n");
printf("多项式和为");
printf("\n");
AddPolyn(La,Lb,Lc);
Print(Lc);
printf("\n");
printf("多项式差为");
printf("\n");
Plus(La,Lb,Ld);
Print(Ld);
}
以前编过一个,再输入多项式的时候,指数从小到大依次输入。
#include
typedef struct
{
float coef;//系数
int expn;//指数
}
ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}
LNode,*LinkList;
LinkList InitList()//创建链表
{
LinkList L;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
return(L);
}
void Creat(LinkList L,ElemType x)//创建多项式
{
LinkList s,p;
s=(LinkList)malloc(sizeof(LNode));
s->data=x;
p=L;
while(p->next)
p=p->next;
s->next=NULL;
p->next=s;
}
void Insert(LinkList L,LNode p)//插入链表
{
LinkList q,pc;
pc=(LinkList)malloc(sizeof(LNode));
*pc=p;
q=L;
while(q->next)
q=q->next;
pc->next=q->next;
q->next=pc;
}
void AddPolyn(LinkList pa,LinkList pb,LinkList pc)//多项式求和
{
LinkList qa,qb;
LNode qc;
float sum;
int a,b;
qa=pa->next;
qb=pb->next;
while(qa&&qb)
{
a=qa->data.expn;
b=qb->data.expn;;
if(a {
Insert(pc,*qa);
qa=qa->next;
}
if(a==b)
{
sum=qa->data.coef+qb->data.coef;
if(sum!=0)
{
qc=*qa;
qc.data.coef=sum;
Insert(pc,qc);
qa=qa->next;
qb=qb->next;
}
else
{
qa=qa->next;
qb=qb->next;
}
}
if(a>b)
{
Insert(pc,*qb);
qb=qb->next;
}
while(qa)
{
Insert(pc,*qa);
qa=qa->next;
}
while(qb)
{
Insert(pc,*qb);
qb=qb->next;
}
}
}
void Plus(LinkList pa,LinkList pb,LinkList pc)//多项式的差
{
LinkList qb;
qb=pb->next;
while(qb)
{
qb->data.coef=-(qb->data.coef);
qb=qb->next;
}
AddPolyn(pa,pb,pc);
}
void Print(LinkList L)//输出多项式
{
LinkList p;
p=L->next;
while(p->next)
{
printf("%fx^%d+",p->data.coef,p->data.expn);
p=p->next;
}
printf("%fx^%d",p->data.coef,p->data.expn);
}
void main()//主函数
{
LinkList La,Lb,Lc,Ld;ElemType c;
int a,i;
La=InitList();
Lb=InitList();
Lc=InitList();
Ld=InitList();
printf("输入La的项数:");
scanf("%d",&a);
for(i=0;i {
printf("输入La第%d项系数和指数:",i+1);
scanf("%f%d",&c.coef,&c.expn);
Creat(La,c);
}
printf("输入Lb的项数:");
scanf("%d",&a);
for(i=0;i {
printf("输入Lb第%d项系数和指数:",i+1);
scanf("%f%d",&c.coef,&c.expn);
Creat(Lb,c);
}
printf("La为");
printf("\n");
Print(La);
printf("\n");
printf("Lb为");
printf("\n");
Print(Lb);
printf("\n");
printf("多项式和为");
printf("\n");
AddPolyn(La,Lb,Lc);
Print(Lc);
printf("\n");
printf("多项式差为");
printf("\n");
Plus(La,Lb,Ld);
Print(Ld);
}
以前编过一个,再输入多项式的时候,指数从小到大依次输入。
全部回答
- 1楼网友:第四晚心情
- 2021-04-04 04:06
ds
- 2楼网友:罪歌
- 2021-04-04 02:26
用不了500行吧
- 3楼网友:思契十里
- 2021-04-04 01:46
这个东东超不易做呀....跟你说哦,这个题目跟我的毕业论文题目相差无几.
.............
.............
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯