数据结构——一元多项式相乘

来源:互联网 发布:无所事事 知乎 编辑:程序博客网 时间:2024/06/05 08:59

   这个程序是转专业后写的第一个作业,除了Debug阶段有点吃力,大体还是没什么问题

void multiplication(NODE *head1,NODE *head2,NODE *head3){    NODE *p1,*p2,*p3,*p4,*p5;    int coe,ex;    for (p1=head1->next; p1!=NULL; p1=p1->next) {        p3=head3;        for (p2=head2->next; p2!=NULL; p2=p2->next) {            coe=(p1->coef)*(p2->coef);            ex=(p1->exp)+(p2->exp);            for (; (p3->next==NULL)?0:p3->next->exp<ex; p3=p3->next) {                continue;            }            if (p3->next==NULL) {                p3->next=(NODE *) malloc((sizeof(NODE)));                p3->next->coef=coe;                p3->next->exp=ex;                p3->next->next=NULL;            }            else if (p3->next->exp==ex)            {                p3->next->coef=p3->next->coef+coe;            }            else if((p3->next->exp)>ex)            {                NODE *p4=(NODE *) malloc(sizeof(NODE));                p4->coef=coe;                p4->exp=ex;                p4->next=p3->next;                p3->next=p4;            }        }    }    p5=head3;    while(p5->next!=NULL){        if (p5->next->coef==0) {            p4=p5->next;            if (p5->next->next==NULL) {                p5->next=NULL;            }            else {                p5->next=p5->next->next;            }            free(p4);        }        else p5=p5->next;    }    if (head3->next==NULL) {        p4=(NODE*) malloc(sizeof(NODE));        p4->coef=0;        p4->exp=0;        p4->next=NULL;        head3->next=p4;    }}

 程序效率并不是很好,排名也比较靠后,但总体思路,就是先全部遍历乘法,然后判断为0的项并剥去

希望能得到指点。

原创粉丝点击