读算法,并在空缺处填入合适的语句。 void addpolyn(Slink &Ha,Slink&Hb) { //用带结点的单链表存储多项式,Ha和Hb分别是两个多项式链表的指针 //多项式加法算法:将多项式Hb加到Ha上,表达式为H

admin2013-12-19  29

问题 读算法,并在空缺处填入合适的语句。
  void addpolyn(Slink &Ha,Slink&Hb)
  {
    //用带结点的单链表存储多项式,Ha和Hb分别是两个多项式链表的指针
    //多项式加法算法:将多项式Hb加到Ha上,表达式为Ha=Ha+Hb,利用两个多项式的结点构成“和多项式”
    pa=Ha;pb=Hb;
    qa-pa->next;qb=pb->next;
    //qa和qb分别指向Ha和Hb的当前结点,pa和pb分别指向Ha和Hb当前结点的前一个结点
    while((qa!=NULL)&&(qb!=NULL))
    {
    a=qa=>data;b=qb->data;
    switch(cmp(a,b)){
    case-1:    //多项式Ha中当前结点的指数值小
    pa=qa;qa=qa->next;break;
    case 0:    //两者的指数值相等
    sum=a.coef+b.coef;
    if(sum!=0.0){qa->data=sum;pa=qa;)
    else{pa->next=qa->next;free(qa);)
    (1)
    pb->next=qb->next;free(qb);qb=qb->next;
    break;
    case 1:    //多项式Hb中当前结点的指数值小
    pb->next=qb->next;
    (2)
    (3)
    (4)
    break;
    }//switch
    }//while
    if(qb!=null)(5)
    free(pb);    //释放Hb的头结点
    }    //addpolyn算法结束

选项

答案(1)qa=pa->next; //移动当前工作指针 (2)qb->next=qa; //将qb指向的结点插到qa之前 (3)pa=pa->next=qb; (4)qb=pb->next; (5)pa->next=qb; //将qb指向的所有结点插入到pa的后面

解析 此题主要考查线性链表的应用。目的是将多项式的相加问题转化为链表的合并问题,在合并时遵循指数相同、系数相加的原则。
转载请注明原文地址:https://jikaoti.com/ti/TpU3FFFM
0

相关试题推荐
最新回复(0)