将ADT Priority Queue实现为链表,无法对元素进行排序

时间:2014-03-11 21:41:52

标签: c pointers linked-list priority-queue abstract-data-type

我正在实现抽象数据类型 - 优先级排队,但我无法找到如何按正确顺序放置值。 我的结构:

typedef int kintyr;

typedef struct qElem {
    struct qElem *prv;          
    kintyr *dat;                    
    int *priority;
}qElem;


typedef struct que {
    qElem *fr,*bk;              
    int cnt;                    
}que;

现在我的主要功能是实现优先级阙

首先创建一个空的PQ:

que *qNew()
{
    que *q = malloc(sizeof(*q));

    if (q==NULL)
        return NULL;

    q->fr = NULL;
    q->bk = NULL;
    q->cnt = 0;


    qFault = 0;
    return q;
}

这是添加元素的功能,但它不起作用

que *qEnq(que *q, kintyr *x, int *prrt)
{
    que *zn=q;
    qFault = 0;
    if (q == NULL)
    {
        qFault = 1;
        return q;
    }
    if (qCHKf(q) == 1)
    {
        qFault = 3;
        return q;
    }
    qElem *new = malloc(sizeof(*new));
    new->prv = NULL;
    new->dat = x;
    new->priority=prrt;

    if (q->fr == NULL || prrt < q->fr->priority ) 
    {
        q->fr = new;

    }
    else
    {
        que *temp=q;
        while(temp->fr!=NULL&&q->fr->priority <= prrt)
            temp = temp->fr;

        new->prv=temp->fr;
        temp->fr=new;
        //if (temp->bk != NULL) 
        //q->bk->prv = new; 

        q->bk = new; }}



        q->cnt++; 
        return q;
    }
}

你有什么想法我该如何解决这个问题?

0 个答案:

没有答案