Skip to content

tidwall/pqueue.c

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pqueue.c

Priority queue for C.

Example

Create a queue of ints.

int compare(const void *a, const void *b, void *udata) {
    if (*(int*)a < *(int*)b) return -1;
    if (*(int*)a > *(int*)b) return 1;
    return 0;
}

void main() {
    int items[] = {9, 5, 1, 3, 4, 2, 6, 8, 9, 2, 1};
    struct pqueue *queue = pqueue_new(sizeof(int), compare, NULL);

    for (int i = 0; i < sizeof(items)/sizeof(int); i++) {
        pqueue_push(queue, &items[i]);
    }

    const void *item = pqueue_pop(queue);
    while (item) {
        printf("%d\n", *(int*)item);
        item = pqueue_pop(queue);
    }
}

// OUTPUT:
// 1
// 1
// 2
// 2
// 3
// 4
// 5
// 6
// 8
// 9
// 9

About

Priority queue for C

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages