#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
typedef struct polynode
{
float coef;
int exp;
struct polynode *next;
}polynode,*PLinklist;
PLinklist Create(int n)
{
PLinklist L,p;
int i;
L=(PLinklist)malloc(sizeof(polynode));
L->next=NULL;
for(i=n;i>0;--i)
{
p=(PLinklist)malloc(sizeof(polynode));
scanf("%f %d",&p->coef,&p->exp);
p->next=L->next;
L->next=p;
}
return(L);
}
PLinklist Attach(float co,int ex,PLinklist o)
{
PLinklist c;
c=(PLinklist)malloc(sizeof(polynode));
c->coef=co;
c->exp=ex;
o->next=c;
return c;
}
PLinklist Print(PLinklist L)
{
int i=0;
PLinklist p=L;
while(p->next!=NULL)
{
i++;
printf("%fx^%d ",p->coef,p->exp);
p=p->next;
}
printf("\n");
}
PLinklist Add(PLinklist A,PLinklist B)
{
PLinklist C;
PLinklist o;
PLinklist p=A;
PLinklist q=B;
int sum;
C=(PLinklist)malloc(sizeof(polynode));
o=C;
while(p!=NULL&&q!=NULL)
{
if(p->exp==q->exp)
{
sum=p->coef+q->coef;
if(sum!=0)
o=Attach(sum,p->exp,o);
p=p->next;
q=q->next;
}
else if(p->exp<q->exp)
{
o=Attach(q->coef,q->exp,o);
q=q->next;
}
else{
o=Attach(p->coef,p->exp,o);
p=p->next;
}
}
while(p!=NULL)
{
o=Attach(p->coef,p->exp,o);
p=p->next;
}
while(q!=NULL)
{
o=Attach(q->coef,q->exp,o);
q=q->next;
}
o->next=NULL;
p=C;
C=C->next;
return C;
}
void main()
{
int n,m;
PLinklist *A,*B,*C;
printf("Input the length of A :\n");
scanf("%d",&n);
A=Create(n);
Print(A);
printf("Input the length of B :\n");
scanf("%d",&n);
b=Create(n);
Print(b);
C=Add(A,B);
Print(C);
}
这是我写的程序,弄了好久出不来,请高手看看吧
Cè¯è¨ä»£ç ï¼
#include "stdio.h"è¿è¡æµè¯ï¼
用C语言实现数据结构的题目:一元多项式相加
struct poly *jisuan(struct poly *head1,struct poly *head2) \/\/多项式的相加 { struct poly *p1,*p2,*r1,*r2;r1=head1;p1=head1->next;r2=p2=head2->next;while(p1&&p2){ if(p1->zhi==p2->zhi){ p1->xi=(p1->xi)+(p2->xi);p2=p2->next;free(r2);r2=p2;r1=p1;p1=...
设计一个一元多项式计算器,输入输出,多项式相加(C语言)
}\/\/以上为将第二个多项式建立成链表 t1=h1=head;t2=tou;\/\/t1,t2分别指向当前结点,h1起辅助作用,第二个链表我们不要,所以可以用tou做辅助作用 while(t1&&t2)\/\/当前结点都不为空 { if(t1->expn<t2->expn)\/\/第一个链表的当前位置的指数小于第二个链表 { h1=t1;t1=t1->next;} else if...
C语言:用单链表实现任意两个一元多项式的加、减法运算
include <stdio.h> include <stdlib.h> include <string.h> define N 7 typedef enum { add, nul, sub, div1, yu, l, r }OP;int a[N][N] = { { 0, 0, -1, -1, -1, 1, 2 },{ 0, 0, -1, -1, -1, 1, 2 },{ 1, 1, 0, 0, 0, 1, 2 },{ 1, 1...
用链式结构写两个一元多项式相加
} \/\/两个多项式相加 void ListAdd(LinkList *&L1,LinkList *&L2,LinkList *&L3){ int coefficient[2*MAX],power[2*MAX],i=0;LinkList *p=L1->next,*q=L2->next;while(p!=NULL&&q!=NULL){ if(p->powerpower){ coefficient[i]=p->coefficient;power[i]=p->power;i++;p=p->...
[内附完整源码和文档] 基于C语言实现的一元多项式的计算
创建一元多项式链表,对一元多项式的运算中会出现的各种可能情况进行分析,实现一元多项式的相加、相减操作。3.1.1 单连表的抽象数据类型定义 ADT List{ 数据对象: D={ai|ai∈ElemSet,i=1,2,…,n,n≥0} 数据关系: R1={<ai-1,ai>| ai-1, ai∈D,i=2,…,n} 基本...
用链表写一个关于一元多项式相加的小程序,求大神看看帮忙讲解一下,十分...
if(ptr->cofe!=0) 是用于判断所求当前项的系数是否为0,如果为0那么这个项不再加入结果链表中,也就是free(ptr)将其释放了;否则的话,将当前项插入结果链表ans_h中,此时分为两种情况:如果ans_h为空链表,那么就将ans_h指向ptr所指的项,作为首节点;将ptr指针插入prev所指节点之后,即prev的...
C语言写多项式相加怎么写?求解
接着,输入第二个多项式的项数和创建链表,再打印第二个多项式。调用AddPolyn()函数实现两多项式的加法,将结果存储在第三个链表中。最后,打印相加结果并暂停程序执行。总结,通过定义链表节点结构并实现创建、打印、加法、删除和插入操作的函数,我们可以用C语言解决多项式相加的问题。程序结构清晰,易于理解...
...用单链表储存一元多项式,并实现两个多项式的相加运算(语法没有错误...
define MAX 20 \/\/多项式最多项数 typedef struct{ double ratio;int exp;} ElemType;typedef struct LNode { ElemType data;struct LNode *next;} LinkList;void CreateListR(LinkList *&L,ElemType a[],int n){ LinkList *s,*r;int i;L=(LinkList *)malloc(sizeof(LinkList));r=L;...
C语言写一个程序,用链表实现多项式相加相减
\/\/要求:多项式按降幂排列#include<stdafx.h>#include<iostream.h>struct node{int coef;\/\/系数int exp;\/\/指数node * next;};node * h1=NULL;\/\/第一个多项式的头指针node * h2=NULL;\/\/第二个多项式的头指针node * insert(int c,int e)\/\/创建一个系数为c,指数为e的结点,并返回其地址{...
C语言用单链表完成多项式相加,代码如下,麻烦帮忙修改一下
{ int coef;int exp;struct poly *next;}Lpoly;Lpoly* creatpoly();\/\/void creatpoly();\/\/<<<返回值类型!!void printpoly(Lpoly*h);Lpoly* addpoly(Lpoly*pa,Lpoly*pb);\/\/void addpoly(Lpoly*pa,Lpoly*pb);\/\/<<<返回值类型!!void main(){ Lpoly*pa,*pb,*pc;printf("第一个表达式...