作业帮 > 综合 > 作业

一元多项式的实现(C语言)

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/29 09:37:07
一元多项式的实现(C语言)
求程序大神帮忙解决一下数据结构的练习.要求:1)一元多项式的输入,显示输出
(1)提示输入多项式系数和指数,输入之后把多项式按照常用形式显示出来
(2)计算结果显示
2)一元多项式加法,减法,乘法实现.
#define TURE 1
#define FALSE 0
#include
#include
typedef struct
{
\x09float coef;
\x09int e;
}ElementType;
typedef struct node
{
\x09ElementType data;
\x09struct node *next;//这也是为什么要定义struct node 而非struct的原因
}Lnode,*LinkList;
int Head_CreatLinkList (LinkList &L,int n,ElementType a[])//头插法建立链表
{
\x09int i;
\x09LinkList head,p;
\x09L=(LinkList)malloc(sizeof(Lnode));
\x09L->next=NULL;
\x09head=L;
\x09for(i=0;inext=NULL;
\x09\x09p->data.coef=a[i].coef;
\x09\x09p->data.e=a[i].e;
\x09\x09head->next=p;
\x09\x09head=p;
\x09}
\x09return TURE;
}
int GetElement(LinkList L)
{
\x09int m;
\x09m=L->data.e;
\x09//printf("%d",m);
\x09return m;
}
int Comp(int a,int b )
{
\x09if(a>b)
\x09\x09return 1;
\x09else if(anext;
\x09p2=L2->next;
L3=p3=L1;//L3改变将导致L1的改变,即最终L3和L1相同
\x09while(p1&&p2)
\x09{\x09
\x09\x09switch(Comp(GetElement( p1),GetElement( p2)))
\x09\x09{
\x09\x09\x09case -1:
\x09\x09\x09{
\x09\x09\x09\x09p3->next=p1;
\x09\x09\x09\x09p3=p1;
\x09\x09\x09\x09p1=p1->next;
\x09\x09\x09\x09break;
\x09\x09\x09}
\x09\x09\x09case 1:
\x09\x09\x09{
\x09\x09\x09\x09p3->next=p2;
\x09\x09\x09\x09p3=p2;
\x09\x09\x09\x09p2=p2->next;
\x09\x09\x09\x09break;
\x09\x09\x09}
\x09\x09\x09case 0:
\x09\x09\x09{
\x09\x09\x09\x09p1->data.coef=p1->data.coef+p2->data.coef;
\x09\x09\x09\x09if(p1->data.coef==0)
\x09\x09\x09\x09{
\x09\x09\x09\x09\x09flag1=p1;
\x09\x09\x09\x09\x09p1=p1->next;
\x09\x09\x09\x09\x09free(flag1);
\x09\x09\x09\x09}
\x09\x09\x09\x09flag2=p2;
\x09\x09\x09\x09p2=p2->next;
\x09\x09\x09\x09free(flag2);
\x09\x09\x09\x09break;
\x09\x09\x09}
\x09\x09}
\x09}
\x09p3->next=p1?p1:p2;
\x09free(L2);
\x09return TURE;
}
int Display_LinkList(LinkList L)
{
\x09LinkList p;
\x09p=L;
\x09if(!p)
\x09\x09return FALSE;
\x09while(p->next)
\x09{
\x09\x09p=p->next;
\x09\x09printf("[%f%, %d]\t",p->data.coef,p->data.e);
\x09}
\x09printf("\n");
\x09return TURE;
}\x09
void main()
{
\x09 LinkList a,b,c;
\x09 ElementType a1[6]={{1,1},{2,7},{3,3},{4,4},{5,9},{1,10}};
\x09 ElementType a2[4]={{-1,1},{2,7},{3,8},{-5,9}};
\x09 Head_CreatLinkList (a,6,a1);
\x09 Head_CreatLinkList (b,4,a2);
\x09
\x09Display_LinkList(a);
\x09Display_LinkList(b);
\x09Union_LinkList(a,b,c);
\x09Display_LinkList(c);
\x09
}
这是自己以前写的一个多项式加法的程序,现在也没检查了,希望你自己好好调试一下,至于减法和除法,只要加一点吧.希望对你有帮助
再问: 好多错误啊,能不能改一下给我?
再答: 请问一下是哪里的错误?编译错误还是什么?刚刚我运行了一下,没有错误呀,我这个程序是直接自己设置了输入,而不是手动输入,你自己可以改一下 ElementType a1[6]={{1,1},{2,7},{3,3},{4,4},{5,9},{1,10}}; ElementType a2[4]={{-1,1},{2,7},{3,8},{-5,9}}; 这两句表示1x^1+2x^7+3x^3+4X^4+5x^9+1x^10 -1x^1+2x^7+3x^8+4X^4-5x^9 这两个表达式相减得到了4x^7+3x^3+4X^4+3x^8+1x^10 是正确结果啊,请问楼主的错误在哪里一
再问: 我上次运行可能出错了,再次运行确实是你给的结果。谢谢,能不能把乘法的帮我弄出来?
再答: 哦,楼主自己可以参考上述代码写出来吧,我现在也在复习数据结构,不过直接复习的图,如果有时间写,在回复你吧,希望你自己动手写写
再问: 好的,非常感谢