实验一 一元多项式的表示与相加 实验目的: 1.复习并熟练掌握数据结构所使用的程序设计语言——C 语言 ; 2.学会单步跟踪、调试自己的程序; 3.加深对线性表特别是链表知识的理解和掌握,并能够运用相关知识来解决相关的具体问题,如一元多项式相加等; 程序流程: 1.定义一元多项式链表结构体类型; 2.输入多项式项数以分配存储空间; 3.输入多项式每项的系数和指数,将其插入当前多项式链表。同时判断是否有与当前节点指数相同的项,若存在,则将两项系数相加合并。此外,若存在系数为 0 的项,将其存储空间释放; 4.进行多项数加法时,新建一个存储结果的链表,分别将两多项式各项依次插入结果多项式即完成多项式相加运算; 5.进行多项数加法时,将减项多项式各项系数化为相反数后进行加法操作,即完成多项式相减运算; 6.对 x 赋值后,将 x 值代入多项式进行运算得到多项式的值; 7.输出多项式。 注意:进行完一次运算以后,应该及时销毁无用多项式以释放空间以便再次应用。 算法及注释: 1)定义一元多项式链表结构体类型 typedef struct Lnode{ float cof; int exp; struct Lnode *next; }Lnode ,*Linklist; 2)建立多项式存储线性链表头结点 void makehead(Linklist &head){ head=(Linklist)malloc(sizeof(Lnode)); head->exp=-1; head->next=NULL; head->cof=1; } 3)将输入的多项式信息存储于节点中 void makelnode(Lnode *&p){ p=(Lnode*)malloc(sizeof(Lnode)); printf("Input the cof and exp\n"); scanf("%fx%d",&p->cof,&p->exp); p->next=NULL; } 4)清除系数为零的多项式节点 void clear(Linklist la){ Lnode *p,*q; p=la; q=p->next; while (q){ if (fabs(q->cof)<=0.000001) { p->next=q->next; free(q); q=p->next; } else { p=p->next; q=q->next; } } } 5)找到多项式中与当前节点同指数项位置 int locate(Linklist l,Lnode *&p,Lnode*e){ p=l; if (!l->next) return(0); while(p&&e->exp!=p->exp){ p=p->next; } if(p) return(1); else { p=l; while (p->next&&e->exp<=p->next->exp) p=p->next; if (!p->next){ p=p; return(0); } return(0); } } 6)将多项式节点插入已有多项式链表中,同时完成系数运算 void caseinsert(Linklist &l,Lnode *e){ Lnode *p; if (locate(l,p,e)){ p->cof += e-...