C - предупреждение: сравнение указателя и целого числа ('struct V_LISTE *' и 'int') - PullRequest
0 голосов
/ 07 мая 2020

для простого связанного (динамического c) списка Я хочу написать функцию, которая удаляет первый элемент, содержащий символ 'k'.

Я написал следующую функцию:

char popIfK(struct V_LISTE **kopf)
{
    char *returnVal;
    struct V_LISTE *kElement;
    kElement = *kopf;
    while (kElement->nachfolger != 'k')
    {
        kElement = kElement->nachfolger;
    }
    returnVal = &(*kopf)->vorname;
    free(*kopf);
    *kopf = kElement;
    return *returnVal;
}

В операторе while я получаю предупреждение: сравнение между указателем и целым числом ('struct V_LISTE *' и 'int') while (kElement-> nachfolger! = 'K')

Я вставил элементы с функцией:

struct V_LISTE *insert(struct V_LISTE *list, char key)
{
    struct V_LISTE *newElement;
    newElement = (struct V_LISTE *) malloc(sizeof(struct V_LISTE));
    newElement->vorname = key;
    newElement->nachfolger = list;
    list = newElement;
    return list;
}

Вызвав его в main:

struct V_LISTE
{
    char vorname;
    struct V_LISTE *nachfolger;
};

int main()
{
    struct V_LISTE *kopf;
    kopf = (struct V_LISTE *) malloc(sizeof(struct V_LISTE));

    kopf->vorname = 'o';
    kopf->nachfolger = NULL;    kopf = insert(kopf, 'l');
    kopf = insert(kopf, 'k');
    kopf = insert(kopf, 'T');

    char name;
    name = popIfK(&kopf);
    printf("%c\n", name);
}

Я запускаю свою программу, я получаю ошибку сегментации: 11 Я не могу решить проблему и нужна помощь, пожалуйста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...