【发布时间】:2018-09-16 21:26:54
【问题描述】:
我有一个 Enque 方法版本,我被要求重写它,不带“if”(或三元运算符)。 无法转动我的头。 任何帮助表示赞赏。
int QueueEnqueue(queue_t *queue, void *data)
{
s_node_t *new_item = SListCreateNode(data, NULL);
if (new_item == NULL)
{
return (1);
}
if (queue->last_item == NULL) /* this one should go away somehow*/
{
queue->last_item = queue->first_item = new_item;
} else {
queue->last_item = queue->last_item->next = new_item;
}
return(0);
}
[更新]替代实施
int QueueEnqueue(queue_t *queue, void *data)
{
s_node_t *new_item = SListCreateNode(data, NULL);
if (new_item == NULL)
{
return (1);
}
if (queue->last_item == NULL) /* this one should go away somehow */
{
queue->first_item = new_item;
} else {
queue->last_item->next = new_item;
}
queue->last_item = = new_item;
return(0);
}
【问题讨论】: