Giri
BAN USERvoid pushBack(Node **dest, Node **src)
{
Node *tmp=*src;
if(!tmp) return;
*src=tmp->next;
tmp->next=*dest;
*dest=tmp;
}
void blockReverse(Node **head, int count)
{
// reverse count nodes
int i=1;
Node *trav=*head;
Node *first_node;
Node *res=NULL,*prev=NULL;
int end=0,first=0;
while(trav &&!end)
{
for(i=1;i<=count;i++)
{
if(trav==NULL)
{
end=1;
} else {
pushBack(&(res),&trav);
}
}
//traverse res count times;
if(prev == NULL) {prev=res;}
else {
while(prev->next) prev=prev->next;
prev->next=res;
while(prev->next) prev=prev->next;
}
if(first==0) {
first_node=res;
first=1;
}
res=NULL;
}
*head=first_node;
}
- Giri April 13, 2018