首页 > 其他 > 详细

a+b polynomial

时间:2020-04-08 17:13:26      阅读:51      评论:0      收藏:0      [点我收藏+]
#include <stdio.h>
#include <stdlib.h>

typedef struct node* Node;

struct node{
    int exp;
    float coe;
    Node next;
};

Node input(void);
Node add(Node p1,Node p2);
void attach(int e,float c,Node *rear);
void print(Node p);

int main()
{
    Node P1,P2,P3;
    
    printf("there2\n");
    P1 = input();
    print(P1);
    printf("there3\n");
    P2 = input();
    print(P2);
    printf("there1\n");
    P3 = add(P1,P2);
    printf("there4\n");
    print(P3);
    system( "PAUSE ");
    return 0;
}

Node input(void)
{
    int N,i;
    int tempe;
    float tempc;
    Node p,p1;
    Node temp;
    
    p = (Node)malloc(sizeof(struct node));
    p->next = NULL;
    p1 = p;
    
    scanf("%d ",&N);
    
    for(i=0;i<N;i++)
    {
        scanf("%d %f ",&tempe,&tempc);
        p1->next = (Node)malloc(sizeof(struct node));
        p1 = p1->next;
        p1->exp = tempe;
        p1->coe = tempc;
        p1->next = NULL;
    }
    
    temp = p;
    p = p->next;
    free(temp);
    
    return p;
}

Node add(Node P1,Node P2)
{
    Node p, rear,temp;
    
    p = (Node)malloc(sizeof(struct node));
    p->next = NULL;
    rear = p;
    printf("there5\n");
    while(P1 && P2)
    {
        printf("there10\n");
        if(P1->exp > P2->exp)
        {
            attach(P1->exp,P1->coe,&rear);
            P1 = P1->next;
        }
        else if(P1->exp < P2->exp)
        {
            printf("there8\n");
            attach(P2->exp,P2->coe,&rear);
            printf("there9\n");
            P2 = P2->next;
        }
        else
        {
            if((P1->coe+P2->coe))                //浮点数为0的判断,需注意
                attach(P2->exp,P1->coe+P2->coe,&rear);
            P2 = P2->next;
            P1 = P1->next;
        }
    }
    printf("there7\n");
    while(P1)
    {
        printf("there11\n");
        attach(P1->exp,P1->coe,&rear);
        P1 = P1->next;
    }
    while(P2)
    {
        printf("there12\n");
        attach(P2->exp,P2->coe,&rear);
        P2 = P2->next;
    }
    
    temp = p;
    p = p->next;
    free(temp);
    printf("there6\n");
    return p;
}

void attach(int e,float c,Node *rear)
{
    Node temp;
    temp = (Node)malloc(sizeof(struct node));
    temp->exp = e;
    temp->next = NULL;
    temp->coe = c;
    
    ((*rear)->next) = temp;
    (*rear) = temp;
}

void print(Node p)
{
    int cnt = 0,i = 0;
    Node temp;
    
    temp = p;
    
    while(temp)
    {
        cnt++;
        temp = temp->next;
    }
    printf("%d ",&cnt);
    
    for(;i<cnt-1;i++)
    {
        printf("%d ",&(p->exp));
        printf("%f ",&(p->coe));
        p = p->next;
    }
    printf("%d ",&(p->exp));
    printf("%f",&(p->coe));
}

 

a+b polynomial

原文:https://www.cnblogs.com/katyusha1/p/12660556.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!