У меня возникли некоторые проблемы с моим методом вставки для связанного списка в 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);