找考题网-背景图
问答题

[说明]
当一元多项式中有许多系数为零时,可用一个单链表来存储,每个节点存储一个非零项的指数和对应系数。
为了便于进行运算,用带头节点的单链表存储,头节点中存储多项式中的非零项数,且各节点按指数递减顺序存储。例如:多项式8x5-2x2+7的存储结构为:

函数中使用的预定义符号如下:
#define EPSI 1e-6
struct Node /*多项式中的一项*/
double c; /*系数*/
int e; /*指数*/
struct Node *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*/
void Insert(POLY *C, struet Node *pC)
/*将pC节点按指数降序插入到多项式C中*/
/*若C中存在pC对应的指数项,则将系数相加;若其结果为零,则删除该节点*/

struct Node *t, *tp;
/*pC为空指针或其系数近似为零*/
if(pC == NULL || fabs(pC->c) < EPSI)return;
if(C->head == NULL) /*若C为空,作为头节点插入*/
C->head = pC;
pC->next = NULL;
C->n++;
return;
/*if*/
/*若pC的指数比头节点的还大,插入到头节点之前*/
if(pC->e > C->head-)e)
(2) ;
C->head = pC;
C->n++;
return;
/*if*/
(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; /*系数相加*/
if(fabs(t->c) < EPSI) /*系数之和为零*/
(4) ; /*删除对应节点*/
C->n--;

(5) ;

else t = NULL; /*C中已经不存在该幂次项*/
/*while*/
if(t == NULL)/*适当位置插入*/
pC->next = tp->next;
tp->next = pC;
C->n++;
/*if*/
;/*Insert*/

(5)处填()。

【参考答案】

break