1
ここには私のadd_to_list
機能に問題があります。単一リンクリストの先頭にノードを挿入する
私は、この関数を使用して、リストポインタによって参照される単独リンクリストを募集するノードを追加します。
問題は次のとおりです。最初のノードが追加されます。それ以上追加すると、リストのトレースが失われます。
first
に
NULL
を割り当て、その後の両方を意味
temp
から
first
の値は、これらの二行...
struct node * first = NULL;
struct node * temp = first;
を持ってmain
の冒頭にそう
#include <stdio.h>
#include <stdlib.h>
struct node {
int value;
struct node* next;
};
struct node *add_to_list(struct node *list , int n){
struct node *new_node ;
new_node = malloc(sizeof(struct node)); //create new node
if(new_node == NULL){
printf("Error ,malloc failed to allocate memory\n");
exit(EXIT_FAILURE);
}
new_node->value = n; //initiate value field
new_node->next = list;
return new_node;
}
int main(){
struct node * first = NULL;
struct node * temp = first;
first = add_to_list(first,10);
if(first != NULL)
printf("node added\n");
else
printf("add failed\n");
first = add_to_list(first,20);
if(first == NULL)
printf("node added\n");
else
printf("add failed\n");
first = add_to_list(first,30);
if(first == NULL)
printf("node added\n");
else
printf("add failed\n");
while(temp!=NULL){
printf("%d-->",(temp->value));
temp = temp ->next;
}
return 0;
}
あなたのテスト。 – Mat
'main()'の先頭には 'struct node * temp = first;'文があり、 'temp'に' NULL 'を割り当てます。 'while'ループではリストを出力しているので' while'ループの前に 'temp'に' first'を代入する必要があります。 –