У меня есть версия метода 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);
}