Узел вставки связанного списка C в конце

У меня проблемы с методом вставки связанного списка в C. Кажется, он добавляет только в начало списка. Любая другая прошивка, которую я делаю, терпит неудачу. И этот отладчик CodeBlocks так сложно понять, что я все еще не понимаю. Это никогда не дает мне значения, просто адреса в памяти. Во всяком случае, это моя функция. Вы видите причину, по которой он терпит неудачу?

/* function to add a new node at the end of the list */
int addNodeBottom(int val, node *head){

    //create new node
    node *newNode = (node*)malloc(sizeof(node));

    if(newNode == NULL){
        fprintf(stderr, "Unable to allocate memory for new node\n");
        exit(-1);
    }

    newNode->value = val;

    //check for first insertion
    if(head->next == NULL){
        head->next = newNode;
        printf("added at beginning\n");
    }

    else
    {
        //else loop through the list and find the last
        //node, insert next to it
        node *current = head;
        while(current->next != NULL)
        {
            if(current->next == NULL)
            {
                current->next = newNode;
                printf("added later\n");
            }
            current = current->next;
        }
    }
    return 0;
}

Затем в основном добавляется только 929.

   //testing addNodeBottom function
    addNodeBottom(929, head);
    addNodeBottom(98, head);
    addNodeBottom(122, head);
    addNodeBottom(11, head);
    addNodeBottom(1034, head);
9
задан idmean 28 February 2015 в 16:31
поделиться