数据结构习题及答案
源代码在线查看: 2.41.c
◆2.41② 试以循环链表作稀疏多项式的存储结构,
编写求其导函数的算法,要求利用原多项式中的结
点空间存放其导函数(多项式),同时释放所有无
用(被删)结点。
实现下列函数:
void Difference(LinkedPoly &pa);
/* 稀疏多项式 pa 以循环链表作存储结构, */
/* 将此链表修改成它的导函数,并释放无用结点 */
链式多项式的类型定义:
typedef struct PolyNode {
int coef;
int exp;
struct PolyNode *next;
} PolyNode, *PolyLink; // 多项式元素(项)结点类型
typedef PolyLink LinkedPoly; // 链式多项式
void Difference(LinkedPoly &pa)
/* 稀疏多项式 pa 以循环链表作存储结构, */
/* 将此链表修改成它的导函数,并释放无用结点 */
{ LinkedPoly p;
p=pa->next;
if(!p->exp)
{
pa->next=p->next;p=p->next; //常数项处理
}
while(p!=pa)
{
p->coef*=p->exp--;//对每一项求导
p=p->next;
}
}