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 readin开发者_开发技巧g it as h = the address of llist[i]
.
Is this correct?
Thanks
I'm reading it as h = the address of llist[i] Is that correct?
Yes.
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.
精彩评论