53 lines
1.3 KiB
C
53 lines
1.3 KiB
C
#include <stdio.h>
|
|
|
|
#include "pqueue.h"
|
|
#include "iqueue.h"
|
|
//http://www.koders.com/c/fid7B82D8DDECE4EDC672F17D970458033C4079A615.aspx?s=queue
|
|
#define INT_VALUE 1000
|
|
|
|
//typedef int (*ComparisonFunction)(void*, void*);
|
|
int compare_int (const int *a, const int *b)
|
|
{
|
|
fprintf(stderr,"comparing %i %i \n",*a,*b);
|
|
int temp = *a - *b;
|
|
// return (a<b) ? 1 : -1;
|
|
|
|
// return -1;
|
|
if (temp < 0)
|
|
return 1;
|
|
else if (temp > 0)
|
|
return -1;
|
|
else
|
|
return 0;
|
|
}
|
|
|
|
|
|
int main (int argc, char* argv[]) {
|
|
int val1 = 1;
|
|
int val2 = 2;
|
|
int val3 = 3;
|
|
int val4 = 4;
|
|
|
|
Queue q = QueueNew();
|
|
|
|
QueuePutOnPriority(q, &val1, INT_VALUE,(ComparisonFunction)compare_int);
|
|
QueuePutOnPriority(q, &val3, INT_VALUE,(ComparisonFunction)compare_int);
|
|
QueuePutOnPriority(q, &val2, INT_VALUE,(ComparisonFunction)compare_int);
|
|
QueuePutOnPriority(q, &val4, INT_VALUE,(ComparisonFunction)compare_int);
|
|
|
|
QueueItem qptr = q->head;
|
|
while (qptr != NULL) {
|
|
int* val = (int*) qptr->element;
|
|
printf("value: %d\n", *val);
|
|
qptr = qptr->next;
|
|
}
|
|
|
|
QueueIterator qiter = QueueIteratorNew(q, 1);
|
|
|
|
while (qiter->currentItem != NULL) {
|
|
int* val = (int*) qiter->currentItem->element;
|
|
printf("iterator value: %d\n", *val);
|
|
QueueIteratorAdvance(qiter);
|
|
}
|
|
}
|