Внутри функции вершина указателя не изменяется, когда указанный узел содержит четное значение. И элемент данных, следующий за предыдущим узлом перед удаленным узлом, также не изменяется.
Функция может быть определена следующим образом.
void deleteEven( pSTACK pS )
{
pNODE *pN = &pS->top;
while( *pN != NULL )
{
if( ( *pN )->value % 2 == 0 )
{
pNODE del = *pN;
*pN = ( *pN )->next;
free( del );
}
else
{
pN = & ( *pN )->next;
}
}
}
Не забудьте изначально установить данные при объявлении стека вершина NULL.