static void DeleteLastNode()

in Tutorials/MemoryUsage/Stage2/main.c [164:190]


static void DeleteLastNode(Node **headNode)
{
    if (*headNode == NULL) {
        Log_Debug("\nThe list is empty...\n");
        return;
    }

    listSize--;
    Log_Debug("\nDeleting the last node from the linked list (list size = %u).\n", listSize);

    // If the list contains just one node, delete it
    if ((*headNode)->next == NULL) {
        DeleteNode(*headNode);
        *headNode = NULL;
        return;
    }

    // Find the second last node
    Node *secondLast = *headNode;
    while (secondLast->next->next != NULL) {
        secondLast = secondLast->next;
    }

    DeleteNode(secondLast->next);

    secondLast->next = NULL;
}