リンクリストのノード内にあるリスト属性に要素を追加する方法、特にポインターの設定方法を理解するのに苦労しています。
私はそのような構造体を持っています:
typedef struct Node
{
int value;
struct Node *elements;
struct Node *next;
}Node;
Node *mainlist;
Node *elemlist;
そして、メインリストで特定のノードを見つけて、elemlistのすべての要素をそのノード*要素に追加できるようにしたいと思います。
メインリストとチェックする値を受け取るこの関数があります:
void add_elements(Node *mainlist, int value)
{
Node *ptr = mainlist;
Node *ptr2 = elemlist;
while(ptr != NULL)
{
if(value == ptr->value)
{
while(ptr2 != NULL)
{
Node *newNode = malloc(sizeof(Node));
newNode->value = ptr2->value;
newNode->next = ptr->elements;
ptr->elements = newNode;
ptr2 = ptr2->next;
}
}
ptr = ptr->next;
}
}
セグメンテーション違反が発生しているため、elemlistの要素がノードの要素に追加されていないことは明らかです。私は自分のポインタで何か間違ったことをしているとかなり確信しています。
これに関する助けをいただければ幸いです。ありがとうございました!