Независимо от того, отсортирован ли список или нет, в любом случае функция неверна.
Для начинающих она может иметь неопределенное поведение, поскольку пользователь может вызвать функцию для пустого списка. В этом случае это выражение
ptr->next != NULL
вызовет неопределенное поведение.
Функция не должна выводить никаких сообщений. Вызывающий функцию решит, выводить ли какое-либо сообщение. Он должен возвращать целочисленное значение либо 0, либо 1, сообщая, является ли список несортированным или отсортированным.
Кроме того, чтобы сделать вывод, что список не отсортирован, нет необходимости проходить его до конца. Переменные count
и count2
не имеют смысла. Они являются избыточными.
Функция может быть определена следующим образом.
int acc_check( const struct node *head )
{
if ( head != NULL )
{
const struct node *prev = head;
while ( ( head = head->next ) != NULL && !( head->data < prev->data ) )
{
prev = head;
}
}
return head == NULL;
}