我正在尝试使用队列数组创建priority queue
,数组的每个索引都是优先级。我尝试了以下解决方案,
队列数据类型包含数组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;
}
我对这句话感到困惑:h = &(p->llist[i]);
我在想llist[i] = h
。
这是用C写它的另一种方式吗?我正在以h = the address of llist[i]
的形式阅读它。
这是对的吗?
由于
答案 0 :(得分:2)
我正在读它,因为h = llist的地址[i]这是正确的吗?
是
答案 1 :(得分:1)
是的,您应将其视为将p->llist[i]
的地址指定给h
。这与llist[i] = h
不同。
此代码使用h
作为简写,以避免必须为后续两行输入p->llist[i]
两次。