zoukankan      html  css  js  c++  java
  • 用循环链表对多项式进行求和算法

    cofe(多项式的系数) exp(多项式的指数) next(指向下一个结点的指针)


    Node *A,*B;{Node *NODE(A,B)//A和B是两个多项式;

    int i,j,k;

    Node *p,*q,*q1,*q2;

    float x;

    q1=A;q2=B;

    q=malloc(sizeof(Node));    //生成一个新节点p,用于存储A与B的和;

    q->cofe=0;    q->exp=-1;q->next=q;    //假设多项式的头节点的系数为0,指数为-1,建立一个循环链表;

    p=q;    //设一个p指针用于保存头节//点,以便之后能找到该链表;

    q1=q1->next;    q2=q2->next;    //将A和B分别指向第一个节点

    while(q1!=A&&q2!=B){    //当q1和q2都没有遍历完的时候;

    if(q1->exp==q2->exp){    //如果q1的指数等于q2的指数则将q1的系数与q2的系数相加之后存入x;

    x=q1->cofe+q2->cofe;

    if(x!=0)            //如果x不为0,则将和x插入到p的尾部;

    {

    q->next=malloc(sizeof(Node));

    q=q->next;

    q->cofe=x;q->exp=q1->exp;

    }

    q1=q1->next;    q2=q2->next;    

    }

    else{                    

    q->next=malloc(sizeof(Node))

    q=q->next;

    if(q1->exp<=q2->exp){            //q1的指数与q2的指数不想等,且q1的指数小于q2的指数,则将q1插入到p的尾部;

    q->cofe=q1->cofe;    q->exp=q1->exp;

    q1=q1->next;                //q1指向下一个节点后在与q2进行比较;

    }    

    else{

    q->cofe=q2->cofe;    q->exp=q2->exp;        //反之,如果q2的指数比q1的指数小,则将q2的节点插入到p的尾部;

    q2=q2->next

    }

    while(q1!=A){                //如果q1还有元素而q2没有了,则将剩下的q1的所有节点插入到p当中;

    q->next=malloc(sizeof(Node));

    q=q->next;

    q->cofe=q1->cofe;    q->exp=q1->exp;

    q1=q1->next;

    }

    while(q2!=B){                //如果q2还有元素而q1没有了,则将剩下的q2插入到p中;

    q->next=malloc(sizeof(Node));

    q=q->next;

    q->cofe=q2->cofe;    q->exp=q2->exp;

    q2=q2->next;

    }

    return p;                    //执行完所有操作后将p的头节点返回。

    }

  • 相关阅读:
    1118诗名,诗词形式,类别实体导入
    1119飞花令句子,好友关系导入
    1116五言诗生成&古今地名标注与展示
    1120地点实体与事件实体导入
    1121实体导入总结
    1111诗人生平信息提取
    1114诗词收集&藏头诗生成&Snownlp正负情感分析
    1112全体诗人个人生平提取
    1113七言诗词收集与LSTM自动写诗
    WPF ListView DataGrid日期时间类型格式转换
  • 原文地址:https://www.cnblogs.com/332hh/p/8865860.html
Copyright © 2011-2022 走看看