bond425
bond425

Reputation: 1107

Priority Queue C

I'm trying to create a priority queue using an array of queues, each index of the array being a priority. I tried the following solution,

The queue data type contains an array llist,

Queue *q_create(int size)
{
struct queue *p;
struct q_head *h;
int i;

if ((p = (struct queue *)malloc(sizeof(struct queue))) != NULL) {
    p->size = size;
    for (i = 0; i < PRIODIFF; i++) {
        h = &(p->llist[i]);
        h->head = NULL;
        h->tail = NULL;
    }
}
return p;
}

I'm confused by the line: h = &(p->llist[i]); I was thinking that llist[i] = h. Is this another way of writing it in C? I'm reading it as h = the address of llist[i]. Is this correct?

Thanks

Upvotes: 0

Views: 1573

Answers (2)

Emil Sit
Emil Sit

Reputation: 23542

Yes, you should read that as assign the address of p->llist[i] to h. This is not the same as llist[i] = h.

This code is using h as a short-hand to avoid having to type p->llist[i] twice for the two subsequent lines.

Upvotes: 1

YXD
YXD

Reputation: 32511

I'm reading it as h = the address of llist[i] Is that correct?

Yes.

Upvotes: 2

Related Questions