#include<stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node *next;
};
typedef struct Node node;
void insert(node* h, int v) {
node* tmp = h;
while(tmp->next)
tmp = tmp->next;
node* newnode = malloc(sizeof(node));
newnode->data = v;
newnode->next = NULL;
tmp->next = newnode;
}
int main(){
node *head = NULL;
head = malloc(sizeof(node));
if(head==NULL){
printf("ta foirer quelque chose frero!");
return 1;
}
head->data=3;
head->next = NULL;
node *p = NULL;
insert(head, 5);
int i=0;
while(i<5){
insert(head, i++);
}
p = head;
while(p){
printf("%d\n",p->data);
p = p->next;
}
return 0;
}
Если вы заметили, я немного изменил компоновку вашего кода и сделал его чище. Вам нужно было пройти, чтобы найти узел , который появляется перед местом , чтобы добавить новый узел , который в данном случае является концом. Обычно это отдельный указатель в другой структуре, содержащей заголовок, который называется tail связанного списка. Вы просто не отслеживали , где , чтобы действительно добавить узел. Эта функция вставки выше делает это.