求一道数据结构的算法
void CreatPolyn( polynomail &P, int m){//输入m的系数和指数,建立表示一元多项式的有序链表P
InitList(P); h = GetHead(P);
e.coef=0.0; e.expn =-1; SetCurElem(h,e);//设置头结点的数据元素
for(i =1;i<=m;++i){//依次输入m个非零项
scanf(e.coef,e.expn);
if (!LocateElem(P,e,q,(*cmp)()){//当前链表中不存在该数据项
(主要是上面这句话不太明白 书上给了有序链表LocateElem的操作)
status LocateElem(LinkList L,ElemType e,Position &q,int(*compare)(ElemType,ElemType));
//若有序链表L中存在与e满足函数compare()取值为0的元素,(疑问:什么样的元素满足与e满足函数compare()取值为0,相等吗?)则q指示L中第一个值为e的结点的位置,并返回TRUE;否则q指示第一个与e满足判定函数compare()取值>0的元素的前驱位置,并返回FALSE(疑问:这句注释有什么意思?什么元素与e满足compare()取值>0)还有!LocateElem()又该怎样定义呢?)
而且原题是if(!LocateElem(P,e,q,(*cmp)())
(*cmp)是不是和(*compare)一个意思啊 但为甚么(*cmp)())括号呢没元素呢
接着后边还有一句话
if(MakeNode(s,e)) InsFirst(q,s)://生成结点并插入链表
}
}
其实主要后两句话不很明白 它怎么实现建立有序链表P的呢???