02—线性表——————数据结构.ppt
文本预览下载声明
讲课时板书教案上的几种常见的指针操作。 讲课时板书教案上的几种常见的指针操作。 讲课时板书教案上的几种常见的指针操作。 算法描述 Ploy *add_ploy(ploy *La, ploy *Lb) /* 将以La ,Lb为头指针表示的一元多项式相加 */ { ploy *Lc , *pc , *pa , *pb ,*ptr ; float x ; Lc=pc=La ; pa=La-next ; pb=Lb-next ; while (pa!=NULLpb!=NULL) { if (pa-expnpb-expn) { pc-next=pa ; pc=pa ; pa=pa-next ; } /* 将pa所指的结点合并,pa指向下一个结点 */ if (pa-expnpb-expn) { pc-next=pb ; pc=pb ; pb=pb-next ; } /* 将pb所指的结点合并,pb指向下一个结点 */ else { x=pa-coef+pb-coef ; if (abs(x)=1.0e-6) /* 如果系数和为0,删除两个结点 */ { ptr=pa ; pa=pa-next ; free(ptr) ; ptr=pb ; pb=pb-next ; free(ptr) ; } else /* 如果系数和不为0,修改其中一个结点的系数域,删除另一个结点 */ { pc-next=pa ; pa-coef=x ; pc=pa ; pa=pa-next ; ptr=pb ; pb=pb-next ; free(ptr) ; } } } /* end of while */ if (pa==NULL) pc-next=pb ; else pc-next=pa ; return (Lc) ; } 算法之二: 对两个多项式链表进行相加,生成一个新的相加后的结果多项式链表,原来两个多项式链表依然存在,不发生任何改变,如果要再对原来两个多项式进行其它操作也不影响。 算法描述 Ploy *add_ploy(ploy *La, ploy *Lb) /* 将以La ,Lb为头指针表示的一元多项式相加,生成一个新的结果多项式 */ { ploy *Lc , *pc , *pa , *pb , *p ; float x ; Lc=pc=(ploy *)malloc(sizeof(ploy)) ; pa=La-next ; pb=Lb-next ; while (pa!=NULLpb!=NULL) { if (pa-expnpb-expn) { p=(ploy *)malloc(sizeof(ploy)) ; p-coef=pa-coef ; p-expn=pa-expn ; p-next=NULL ; /* 生成一个新的结果结点并赋值 */ pc-next=p ; pc=p ; pa=pa-next ; } /* 生成的结点插入到结果链表的最后,pa指向下一个结点 */ if (pa-expnpb-expn) { p=(ploy *)malloc(sizeof(ploy)) ; p-coef=pb-coef ; p-expn=pb-expn ; p-next=NULL ; /* 生成一个新的结果结点并赋值 */ pc-next=p ; pc=p ; pb=pb-next ; } /* 生成的结点插入到结果链表的最后,pb指向下一个结点 */ if (pa-expn==pb-expn) { x=pa-coef+pb-coef ; if (abs(x)=1.0e-6) /* 系数和为0,pa, pb分别直接后继结点 */ { pa=pa-next ; pb=pb-next ; } else /* 若系数和不为0,生成的结点插入到结果链表的最后, pa, pb分别直接
显示全部