0
私はセグメンテーションフォールトを与えているこのメソッドを持っていますが、私はそれを理解することができません。与えられた名前と一致するノードを削除する必要があります。式*head
の値が空のリストについてNULL
に等しくすることができるので、関数は動作が未定義たスターターについてノード構造体を使用する際のセグメンテーションフォルト
typedef struct node
{
int id;
char* name;
struct node* next;
} node;
node* rem_inorder(node** head, char* key_name)
{
node* temp = *head;
int found =0;
while(temp -> next != NULL &&!found)
{
if(temp -> name == key_name){
printf("works");
found = -1;}
else {
temp = temp ->next;}}
if(found == -1)
{return temp;}
else
{return NULL;}}
Iを示すコードで参照ない問題を定義することができます。あなたのリンクされたリストはおそらく、この機能に入る前に他の場所から壊れています。唯一参照しているのは 'temp->'なので、 '* head'はいいとは言えません。 – yano
あなたはそれで何を意味していますか?頭が悪いです。これは、リストを通る一時変数です。私はそれを頭にどのように割り当てるべきですか? –
私はこの機能で実際にセグメンテーションを取得している場合は、 '* head'がおそらく' NULL'またはごみの値であると言っています。 – yano