Exemple #1
0
/*
Syfte: L�gga till ett v�rde p� r�tt st�lle utifr�n sin prioritet i priok�n
Parametrar: q - priok�n (pqueue *)
            d- v�rdet som ska l�ggas till (data)
Kommentarer:
*/
void pqueue_insert(pqueue *q,data d){
    MyPQ *prioq = (MyPQ*)q;
    int placed = 0;
    list_position pos =list_first(prioq->pq);

    if (list_isEmpty(prioq->pq)){
        list_insert(prioq->pq, d, list_first(prioq->pq));
    }else{
        while(!placed && pos!=list_end(prioq->pq)){
            if(prioq->cf(d, list_inspect(prioq->pq, pos))){
                    placed = 1;
                    list_insert(prioq->pq, d, pos);
            }
            pos = list_next(prioq->pq, pos);
        }
        if (!placed){
            list_insert(prioq->pq, d, pos);
        }
    }
}
Exemple #2
0
/*
Syfte: Hämtar första värdet i kön
Parametrar: q - Kön (queue *)
Returvärde: värdet som fanns längst fram i kön
Kommentarer: ej definierad för tom kö.
*/
data queue_front(queue *q) {
    return list_inspect(q,list_first(q));
}
Exemple #3
0
/*
Syfte: H�mtar f�rsta v�rdet i priok�n
Parametrar: q - priok�n (pqueue *)
Returv�rde: v�rdet som fanns l�ngst ram i priok�n
Kommentarer: ej definierad f�r tom priok�.
*/
data pqueue_inspect_first(pqueue *q){
    MyPQ *prioq = (MyPQ*)q;
    return list_inspect(prioq->pq,list_first(prioq->pq));
}