1

Cのリンクリストからアイテムを削除するにはどうすればよいですか.

typedef struct
{
    int n;
    struct item *nexI;

} item;


#define na 1000
int n, j;

私は主に持っています:

item * list[na];

n = 5;

for(j = 0; j < na; j++)
    remove_elem(list, n, j);

今私の関数remove_elem:

void remove_elem(item * list[], int n, int pos)
{
    int i;
    item * aux;
    item * sec;


    aux = list[pos]->nexI;

    if(aux == NULL)
        return;
    else
    {
        sec = (item *)aux->nexI;

        if(aux->n == n)
        {
        list[pos]->nexI = sec;
            return;
        free(aux);
        }

        while(sec != NULL)
        {

            if(sec->n == n)
            {
                aux->nexI = sec->nexI;
                free(sec);
                return;
            }
        aux = (item *) aux->nexI;
        sec = (item *) sec->nexI;
        }
    }

}

しかし、このコードでセグメンテーション違反が発生し、その理由がわかりません。ここで何が間違っているのか理解できますか?

4

1 に答える 1