那个大神帮我改改,看看,如果改不了,麻烦给我一份,类似的,多项式的加减乘运算
#include"stdio.h"#include"stdlib.h"
#include"malloc.h"
typedef struct Lnode
{
float a;
int e;
struct Lnode*next;
}Lnode,*LinkList;
LinkList CreatList(int n)
{
int i;
LinkList l,s;
l=(LinkList)malloc(sizeof(Lnode));
l->next=NULL;
for (i=0;i<n;i++)
s=(LinkList )malloc(sizeof(Lnode));
printf("输入第%d项的系数",n-1);
scanf("%d",s->e);
s->next=l->next;
l->next=s;
printf("\n");
return l;
}
void print(LinkList l)
{LinkList p1,p2,w;
int n=0;
p1=l->next;
float i;
int j;
while(p1->next)
{i=p1->a;
j=p1->e;
p2=p1->next;
while(p2)
{if((p2->e)<j)
{
p1->a=p2->a;
p1->e=p2->e;
p2->a=i;
p2->e=j;
i=p1->a;
j=p1->e;
}
p2=p2->next;
}
p1=p1->next;
}
printf("去掉系数位零项,合并同类项,升幂排序后\n");
w=l->next;
printf("一元多项式为,");
//printf("w-<<w->a<<"*x^"<<w->e\n");
n++;
w=w->next;
while(w)
{
//printf("+"<<w->a<<"x^"<<w->e\n");
w=w->next;
n++;
}
}
printf("\n");
printf("多项式共%d项\n\n",n);
}
void Delete0(LinkList l)
{
LinkList q=l->next,p=l;
while(p->next){
q=p->next;
if(q->a==0)
{p->next=q->next;
free(q);
p=l;
}
p=p->next;
}
}
void hebing(LinkList l)
{
LinkList p=l->next,q;
q=p;
int m;
while(p)
{
m=p->e;
q=p;
while(q->next){
if(q->next->e==m){
p->a=q->next->a+p->a;
q->next->a=0;
}
q=q->next;
}
p=p->next;
}
}
LinkList plus(LinkList l1,LinkList l2);
{LinkList p1=l1->next,p2=l2->next,p3,l3;
l3=(LinkList)malloc(sizeof(Lnode));
l3->next=NULL;
while(p1){
p3=(LinkList)malloc(sizeof(Lnode));
p3->a=p1->a;
p3->e=p1->e;
p3->next=l3->next;
l3->next=p3;
p1=p1->next;
}
while(2)
{
p3=(LinkList)malloc(sizeof(Lnode));
p3->a=p2->a;
p3->e=p2->e;
p3->next=l3->next;
l3->next=p3;
p2=p2->next;
}
hebing(l3);
Delete0(l3);
return l3;
}
LinkList multip(LinkList la,LinkList lb)
{
LinkList pb=lb->next,pc,lc,s;
lc=(LinkList)malloc(sizeof(Lnode));
s->next=NULL;
while(pb)
{float i=pb->a;
int j=pb->e;
LinkList pa=la->next;
while(pa){
pc(LinkList)malloc(sizeof(Lnode));
pc->next=NULL;
pc->a=(pa->a)*i;
pc->e=pa->e+j;
pc->next=lc->next;
lc->next=pc;
pa=pa->next;
}
s=plus(lc,s);
pb=pb->next;
}
hebing(s);
Delete0(s);
return(s);
}
#include"bbb.h"
void main()
{
int m,n;
char ch;
printf("***************一元多项式的运算********\n");
printf("必须先执行1、2\n");
printf("按任意键加回车开始,如果结束请输入#加回车\n");
//cin>>ch;
while(ch!='#'){
printf("请选择,1、创建第一个多项式(2、第二个多项式(3、做加法(4、做乘法(#退出\n");
//cin>>n;
printf("系数必须为实数,指数必须为整数"\n\n");
LinkList link1,link2,link3,link4;
switch(n){
case 1:{printf("输入第一个多项式的项数,至少为一项,\n");
printf("至少为一项"\n");
//cin>>m:
}
case 2:{
printf("输入第二个多项式的项数,\n");
//cin>>m;
while(m<=0){
printf("输入数据部合法,请重新输入\n");
//cin>>m;
}
link2=CreatList(m);
hebing(link2);
if(m>1)Delete0(link2);
//print(link2);
break;
}
case 3:{
link3=plus(link1,link2);
//print(link3);
break;}
case 4:{
link4=multip(link1,link2);
//print(link4);
break;}
default:printf("输入不符合规则\n");
}
ch=getchar();
}