для простого связанного (динамического 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 Я не могу решить проблему и нужна помощь, пожалуйста.