Я пытаюсь создать 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 llist[i]); h->head = NULL; h->tail = NULL; } } return p; }
Меня смущает строка: h = &(p->llist[i]);
Я думал, что llist[i] = h
. Это еще один способ написать его в C? Я читаю его как h = the address of llist[i]
. Это правильно?
Спасибо
Я читаю его как h = адрес llist [i] Это правильно?
Да.
Да, вы должны прочитать, что назначьте адрес p->llist[i]
на h
. Это не то же самое, что и llist[i] = h
.
Этот код использует h
в качестве короткого замыкания, чтобы избежать необходимости вводить p->llist[i]
дважды для двух последующих строк.