我建立了一个链表 有一个按freq 排序的函数和一个LocateNode函数(查找到e,freq加1再按freq排序)
我的问题是:运行时在LocateNode函数里不能正确调用freqsort,在 main函数里却可以调用freqsort
typedef int ElemType;
typedef struct DLListnode
{
ElemType date;
int freq;
struct DLListnode *next;
struct DLListnode *prior;
}DLinkList;
void freqsort(DLinkList *&L){
DLinkList *p,*q,*pre;
p=L->next->next;
L->next->next=NULL;
while(p!=NULL)
{
pre=L;
q=p->next;
while(pre->next!=NULL&&pre->next->freq>p->freq) pre=pre->next;
p->next=pre->next;
pre->next=p;
p=q;
}
}
int LocateNode(DLinkList *&L,ElemType e)
{
DLinkList *p=L->next;
int i=1;
while(p!=NULL&&p->date!=e){
p=p->next;
i++;
}
if(p==NULL)return 0;
else {
p->freq++;
return i;
}
// freqsort(L);在这里调用 freqsort(L)不能排序
}