Как удалить из однонаправленного списка все элементы с парными номерами

Задание:создать однонаправленный список, состоящий из 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;
    }
}

Ответы (0 шт):