Очередь приоритетов C - PullRequest
       22

Очередь приоритетов C

0 голосов
/ 25 апреля 2011

Я пытаюсь создать priority queue, используя массив очередей, причем каждый индекс массива является приоритетом.Я попробовал следующее решение,

Тип данных очереди содержит список массивов,

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;
}

Я запутался в строке: h = &(p->llist[i]); Я думал, что llist[i] = h.Это еще один способ написать это на C?Я читаю это как h = the address of llist[i].Это правильно?

Спасибо

Ответы [ 2 ]

2 голосов
/ 25 апреля 2011

Я читаю это как h = адрес list [i] Это правильно?

Да.

1 голос
/ 25 апреля 2011

Да, вы должны прочитать это как присвоить адрес p->llist[i] для h. Это не то же самое, что llist[i] = h.

Этот код использует h в качестве сокращения, чтобы избежать необходимости вводить p->llist[i] дважды для двух последующих строк.

...