Как удалить из однонаправленного списка все элементы с парными номерами
Задание:создать однонаправленный список, состоящий из n целых чисел. удалить из списка все элементы с парными номерами (2, 4, 6 и т.д.), записав их в новый список.С созданием не было проблем , а от с удалением.... Создание:
struct list* create(void)
{
printf("Заполните список. Остановить заполнение '#'\n");
int check=0, first = 0;
list* head;
list *p, *prev;
int ch=0;
do {
int int_num, checker, one, to_add;
char* inp = calloc(50, sizeof(char));
char* last;
char* d="#";
if (first == 1)
{
do {
one = 0;
printf("Введите элемент:");
checker = scanf("%s", inp);
if( strcmp(inp, d) == 0 ){
ch = 1;
one = 1;
break;
}
int_num = strtol(inp, &last, 0);
if (*last == '\0'){
to_add = int_num;
one = 1;
break;
}
if (one != 1) printf("Пожалуйста, попробуйте еще раз:):.\n");
} while(one == 0);
}
if (first == 0){
to_add = IntInput("Введите первый элемент:");
first = 1;
}
if (ch == 1){
p->next = NULL;
return head;
}
p = (list*) malloc(sizeof(list));
if (!p) exit(1);
if (check == 0){
head = prev = p;
check = 1;
}
p->number = to_add;
if (prev) {
prev->next = p;
}
prev = p;
} while (ch == 0);
}
void Delete_Item(list* head)
{
list* curr = head;
while (curr != nullptr) /
{
if (curr->number % 2 == 0)
{
list* tmp = curr->Next;
curr->Next = tmp->Next;
delete tmp;
}
curr = curr->Next;
}
}