数据结构之多项式

数据结构之多项式

 下面是对多项式的基本输入和输出

#include "stdio.h"
#include "stdlib.h"
typedef struct PolyNode *Polynomial;
struct PolyNode
{
    int coef;
    int expon;
    Polynomial link;
};

Polynomial ReadPoly(void);
Polynomial Mult(Polynomial P_1,Polynomial P_2);
Polynomial Add(Polynomial P_1,Polynomial P_2);
void PrintPoly(Polynomial P);
void Attach(int c,int e,Polynomial *pRear);
int main(void)
{
    Polynomial P1;
    P1=ReadPoly();
    PrintPoly(P1);
    wait(60);
    return 0;
}
Polynomial ReadPoly(void)//读取多项式 
{
    Polynomial P,Rear,t;
    int c,e,N;
    scanf("%d",&N);
    P=(Polynomial)malloc(sizeof(struct PolyNode));
    P->link=NULL;
    Rear=P;
    while(N--)
    {
        scanf("%d %d",&c,&e);
        Attach(c, e, &Rear);
    }
    t=P;
    P=P->link;
    free(t);
    return P;
}

void Attach(int c,int e,Polynomial *pRear)
{
    Polynomial P;
    P=(Polynomial)malloc(sizeof(struct PolyNode));
    P->coef=c;
    P->expon=e;
    P->link=NULL;
    (*pRear)->link=P;
    *pRear=P;
}
void PrintPoly(Polynomial P)
{
    int flag=0;
    if(!P){printf("0 0\n");return ;
    }
    
    while(P)
    {
        if(!flag)
            flag=1;
        else
            printf(" ");
        printf("%d %d",P->coef,P->expon);
        P=P->link;
         
    }
}

 下面是多项式加法部分

Polynomial Add(Polynomial P_1,Polynomial P_2)
{
    Polynomial P_Add,front,temp;
    int sum;
    P_Add=(Polynomial)malloc(sizeof(struct PolyNode));
    front=P_Add;
    while(P_1&&P_2)
    {
        if(P_1->expon > P_2->expon)
        {
            Attach(P_1->coef, P_1->expon, &P_Add);
            P_1 = P_1->link;
        }
        else if(P_1->expon < P_2->expon)
        {    
            Attach(P_2->coef, P_2->expon, &P_Add);
            P_2 = P_2->link;
        }    
        else if(P_1->expon == P_2->expon)    
        {
            sum = P_1->coef+P_2->coef; 
            if(sum)Attach(sum, P_2->expon, &P_Add);
            P_2 = P_2->link;    
            P_1 = P_1->link;
        }

        

    }     
        for(;P_1;P_1=P_1->link)    Attach(P_1->coef, P_1->expon, &P_Add);
        for(;P_2;P_1=P_2->link)    Attach(P_2->coef, P_2->expon, &P_Add);    
        P_Add->link=NULL;
        temp=front;
        front=front->link;
        free(temp);
        return     front;
            
}

 

转载于:https://www.cnblogs.com/bobokekemeile/p/10290733.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
多项式相加是指将两个或多个多项式相加得到一个新的多项式。在数据结构中,可以使用链表或数组来表示多项式。 一种常见的数据结构是使用链表表示多项式。每个节点包含两个成员:系数和指数。链表的每个节点代表一个单项式,多个节点组成一个多项式。通过遍历链表,可以将相同指数的节点合并,并将系数相加得到新的系数。 另一种数据结构是使用数组表示多项式。数组的索引表示指数,数组的值表示系数。通过遍历数组,可以将相同指数的系数相加得到新的系数。 以下是一种基于链表的数据结构设计多项式相加的示例代码: ```python class Node: def __init__(self, coefficient, exponent): self.coefficient = coefficient self.exponent = exponent self.next = None def add_polynomials(poly1, poly2): result = None current = None while poly1 and poly2: if poly1.exponent > poly2.exponent: coefficient = poly1.coefficient exponent = poly1.exponent poly1 = poly1.next elif poly1.exponent < poly2.exponent: coefficient = poly2.coefficient exponent = poly2.exponent poly2 = poly2.next else: coefficient = poly1.coefficient + poly2.coefficient exponent = poly1.exponent poly1 = poly1.next poly2 = poly2.next if coefficient != 0: node = Node(coefficient, exponent) if result is None: result = node current = node else: current.next = node current = node while poly1: node = Node(poly1.coefficient, poly1.exponent) current.next = node current = node poly1 = poly1.next while poly2: node = Node(poly2.coefficient, poly2.exponent) current.next = node current = node poly2 = poly2.next return result ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值