rain487 2022-02-19 20:28 采纳率: 40%
浏览 52

一元多项式的乘法 合并同类项


#include<stdio.h>
#include<malloc.h>
typedef int elementtype;
struct node{
    elementtype dishu,zhishu;
    struct node* next;
};
typedef struct node* List;
List create(List L);
List add(List L1,List L2);
List mult(List L1,List L2);
int main(){
    List L1=NULL,L2=NULL;
    L1=create(L1);
    L2=create(L2);
    List p=mult(L1,L2);
    int flag=1;
    while(p){
        if(flag==1){
            printf("%d %d",p->dishu ,p->zhishu );
            flag=0;
        }
        else printf(" %d %d",p->dishu ,p->zhishu );
        p=p->next ;////
    } 
    flag=1;
    printf("\n");
    List head=add(L1,L2); 
    while(head){
        if(flag==1){
        printf("%d %d",head->dishu ,head->zhishu );
        flag=0;    
    }
        else printf(" %d %d",head->dishu ,head->zhishu );
        head=head->next ;
    }
    return 0;
}
List create(List L){
    elementtype number;
    List p,tail=NULL;
    int n,i;
    scanf("%d",&n);
    for(i=0;i<n;i++){
        p=(List)malloc(sizeof(struct node));
        p->next =NULL;
        scanf("%d %d",&p->dishu,&p->zhishu );
        if(L==NULL)L=p;
        else{
            tail->next =p;
        }
        tail=p;
    }
    return L;
}
List add(List L1,List L2){
    List p1=L1,p2=L2;
    List head=NULL,tail,p;
    while(1){
        if(p1==NULL||p2==NULL)break;
        p=(List)malloc(sizeof(struct node));
        p->next =NULL;
        if(p1->zhishu ==p2->zhishu ){
            p->dishu =p1->dishu +p2->dishu ;
            p->zhishu =p1->zhishu ;
            p1=p1->next ;
            p2=p2->next ;//
        }
        else if(p1->zhishu >p2->zhishu ){
            p->dishu =p1->dishu ;
            p->zhishu =p1->zhishu;
            p1=p1->next ; //
        }
        else{
            p->dishu =p2->dishu ;
            p->zhishu =p2->zhishu; 
            p2=p2->next ;//
        }
        if(head==NULL)head=p;
        else tail->next =p;
        tail=p;
    }
    if(p1==NULL) tail->next =p2;
    else tail->next =p1;
    return head;
}
List mult(List L1,List L2){
    List head=NULL,p,tail;
    List p1=L1,p2=L2;
    while(p2){//初步结果 
        p=(List)malloc(sizeof(struct node));
        p->next =NULL;
        p->dishu =p1->dishu *p2->dishu ;
        p->zhishu =p1->zhishu+p2->zhishu;
        p2=p2->next ;  
        if(head==NULL)head=p;
        else tail->next =p;
        tail=p;
    }
    p1=p1->next ;
    while(p1){
            int equal;
            p2=L2;////
            while(p2){
            List rear=head;
            equal=0;
            p=(List)malloc(sizeof(struct node));
            p->next =NULL;
            p->dishu =p1->dishu *p2->dishu ;
            p->zhishu =p1->zhishu+p2->zhishu;
            while(rear->next&&rear->next->zhishu >=p->zhishu ){
            if(rear->next ->zhishu ==p->zhishu ){//相等 
                rear->next->dishu =p->dishu +rear->next ->dishu ;//
                if(rear->next->dishu==0) rear->next =rear->next->next ; ////
                equal=1;
                break; 
            }
            rear=rear->next ;
        }
            if(equal==0){//不相等 
            p->next =rear->next ;
            rear->next =p;
        }
        p2=p2->next ;
        }
        p1=p1->next ;
    }
    return head;
}

img


合并同类项的语句哪里出错了?出错点在哪?

  • 写回答

1条回答 默认 最新

  • 忧默的小男孩 2022-02-19 22:49
    关注

    大哥我能问问这是啥做题软件吗

    评论

报告相同问题?

问题事件

  • 创建了问题 2月19日

悬赏问题

  • ¥15 数据库原理及应用上机练习题
  • ¥30 征集Python提取PDF文字属性的代码
  • ¥15 如何联系真正的开发者而非公司
  • ¥15 有偿求苍穹外卖环境配置
  • ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
  • ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 (求远程解决)深信服vpn-2050这台设备如何配置才能成功联网?