美文网首页陆子的国学课堂心理简友广场
数据结构上机习题2:两个一元多项式的和

数据结构上机习题2:两个一元多项式的和

作者: Cache_wood | 来源:发表于2021-07-09 09:12 被阅读0次
#include <stdio.h>
#include <stdlib.h>
 
typedef struct LinkNode{
    int coef;//系数
    int index;//指数
    struct LinkNode *next; 
}LinkNode,*LinkList; 
 
LinkList createLinkNode(){
    LinkList L=(LinkList) malloc(sizeof(LinkNode));
    L->next=NULL;   
    printf("请输入多项式(系数,指数):");
    LinkNode *q=L,*p;
    int coef,index;
    scanf("%d,%d",&coef,&index);
    while(!(coef==0&&index==0)){
        p=(LinkNode *)malloc(sizeof(LinkNode));
        p->next=NULL;
        p->coef=coef;
        p->index=index;
        q->next=p;
        q=p;
        printf("请继续输入多项式(系数,指数):");
        scanf("%d,%d",&coef,&index);
    }
    return L;
}
 
void add(LinkList L1,LinkList L2){
    LinkNode *p1,*temp;
    while(L2->next!=NULL){
        p1=L1;
        while(p1->next!=NULL&&p1->next->index!=L2->next->index){
            p1=p1->next;
        }
        temp=L2->next;
        L2->next=temp->next;
        temp->next=NULL;
        if(p1->next==NULL){
            temp->next=p1->next;
            p1->next=temp;
        }else{
            p1->next->coef+=temp->coef;
            free(temp);
            if(p1->next->coef==0){
                temp=p1->next;
                p1->next=temp->next;
                free(temp);
            }
        }
    }
    free(L2);
}
 
int main(){
    LinkList L1=createLinkNode();
    LinkList L2=createLinkNode();
    add(L1,L2);
    LinkNode *p=L1->next;
    if(p==NULL)return 0;
    while(p!=NULL&&p->next!=NULL){
        printf("%dx^%d+",p->coef,p->index);
        p=p->next;
    }
    if(p!=NULL)printf("%dx^%d",p->coef,p->index);
    return 0;
}

相关文章

网友评论

    本文标题:数据结构上机习题2:两个一元多项式的和

    本文链接:https://www.haomeiwen.com/subject/gjktpltx.html