阅读下列函数说明、图和C代码,将应填入(n)处的字句写在答题纸对应栏内。 【说明】 当一元多项式 中有许多系数为零时,可用一个单链表来存储,每个节点存储一个非零项的指数和对应系数。为了便于进行运算,用带头节点的单链表存储,头节点中存储多项式中的非零项数,且

admin2014-10-11  22

问题 阅读下列函数说明、图和C代码,将应填入(n)处的字句写在答题纸对应栏内。
【说明】
当一元多项式
中有许多系数为零时,可用一个单链表来存储,每个节点存储一个非零项的指数和对应系数。为了便于进行运算,用带头节点的单链表存储,头节点中存储多项式中的非零项数,且各节点按指数递减顺序存储。例如:多项式8x5一2x2+7的存储结构为:

函数中使用的预定义符号如下:
#define EpSI1e一6
structNode(    /*多项式中的一项*/
double c;    /*系数*/
    int e;   /*指数*/
    structN0de  *next;
    };
    typedef struct{    /*多项式头节点*/
    int n;    /*多项式不为零的项数*/
    struct Node  *head;
    )POLY;
【函数】
    void Del(PoLY*C,  struct Node*p)
    /*若p是空指针则删除头节点,否则删除p节点的后继*/
    {
    struct Node*t;
    /*c是空指针或c没有节点*/
    if(C==NULL ||C一>head==NULL)return;
    if((1)){/+删除头节点*/
    t=C一>head:
    C一>head=t一>next;
    return;
    }/*if*/
    t=p一>next;
    p一>next=t一>next;
    );/*Del*/
    voidInsert(POLY  *C,  structN0de *pC)
    /*将pc节点按指数降序插入到多项式c中*/
/*若c中存在pc对应的指数项,则将系数相加;若其结果为零,则删除该节点*/
    {
    struct N0de*t,  *tp;
    /*pc为空指针或其系数近似为零*/
    if(pC==NULL ||fabs(pC一>c)      i f(c一>head==NuLL)(/*若C为空,作为头节点插入*/
    C一>head=pC;
    pC一>next  =NULL;
    C一>n++:
    retUrn;
    }/*i£*/
    /*若pc的指数比头节点的还大,插入到头节点之前*/
    if(pC一>e>C一>head一>e){
    (2)  ;
    C一>head=pC;
    C一>n++:
    return:
    }/ *i£*,
    (3)  ;
    t=C一>head:
    while(t!=NULL){
    if(t一>e>pC一>e)(
    tp=t;
    t=t一>next:
    }
    else if(t一>e==pc一>e){/*c中已经存在该幂次项*/
    t一>c+=pc一>c;/*系数相加*/
    i£(fabs(t一>c)    (4);/*删除对应节点*/
    C一>n一一:
    }
    (5)  ;
   }
    else t=NuLL;/*c中已经不存在该幂次项*/
    }/*while*/
    if(t==NuLL){/*适当位置插入*/
    pC一>next=tp一>next;
    tp一>next=pC;
    C一>n++:
   } /*if*,
    };/*Insert*/

选项

答案(1)P==NULL (2)pC一>next=C一>head一>next (3)tp=NULL (4)Del(C,tp) (5)break

解析 根据注释,Del函数当p是空指针时,删除头节点,因此易知(1)空应填P==NULL。
(2)空是插入头节点的特殊情况,应填pC一>next=C一>head一>next。
由注释可知空(4)是删除操作,需调用Del函数,进一步确定实参。此处需要删除节点t,结合Del函数的说明,实参P需要空指针(NULL)或t节点的前驱指针,由if(t一>e>pC一>e)(tp:t;t=t一>next;可知,tp正是t节点的前驱指针。因此应填Del(C,tp)。由此也可以确定空(3),当需要删除头节点时,tp应是空指针,因此空(3)应填tp=NULL。至于空(5),应填break。此时,节点p已正确处理完毕,应该结束while循环,而且必须终止,否则while循环结束后t值为NULL,将会错误的执行插入操作。
转载请注明原文地址:https://jikaoti.com/ti/bRi7FFFM
0

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