Я решить проблему реверсирования связанного списка в группах заданного размера и алгоритма я использую выглядит следующим образом:реверсирования связанного списка в группах заданного размера
1) Реверс первого подспискома размера k. При обратном я сохранил следы следующего узла и предыдущего узла. Пусть указатель на следующий узел будет следующим, а указатель на предыдущий узел будет предварять & указатель на текущий узел - это ptr.
2) голова = реверс (следующий, к) -Recursively вызов для остальной части списка
3) возвращение предыдущая которое новый глава обращенного списка
Мой пример кода:
struct node *reverse(struct node *start,int k)
{
struct node *prev,*ptr,*next;
prev=NULL;
ptr=start;
int count=0;
while(count<k && ptr!=NULL)
{
next=ptr->link;
ptr->link=prev;
prev=ptr;
ptr=next;
count++;
}
if(next!=NULL)//recursive call
start=reverse(next,k);
return prev;
}
Но мой вывод только для первой половины списка!
для например: Если мой список: 98 74 94 857 8 7
My output is : 94 74 98(The rest is not being displayed)
Где я неправильно .. Является ли этот метод правильно?
Что означает «реверсирование в группах»? Переверните каждую группу, сохраняя относительный порядок групп неизменными? Или изменить относительный порядок групп, сохраняя порядок внутри каждой группы без изменений? – AnT