Interview Questions

Reverse linklist in block .....

Microsoft Interview Questions and Answers


(Continued from previous question...)

277. Reverse linklist in block .....

Question:
Reverse linklist in block
eg. block size is 3 and list is
1 2 3 4 5 6 7 8
Output: 3 2 1 6 5 4 8 7



maybe an answer:


# include <stdio.h>
# include <stdlib.h>

typedef struct node
{
int data;
struct node *next;
}mynode;

void printlist ( struct node *p )
{
printf("\nThe data values in the list are\n");
while (p!= NULL)
{
printf("%d\t",p-> data);
p = p-> next;
}
}

mynode *reverse_recurse_n(mynode *start, int n, int count)
{
if(start->next != NULL)
{
mynode *head=reverse_recurse_n(start->next, n, count+1);

if(count % n !=0)
{
start->next->next=start;
start->next = NULL;
}else{
temp = head;
head = start ;
}
if(count % n == 1)
{
start->next = temp;
}

return(head);

}else{
return start;
}

}

int main()
{
struct node *start = NULL ;
start = insert ( start, 1 ); start = insert ( start, 2 );
start = insert ( start, 3 ); start = insert ( start, 4 );
start = insert ( start, 5 ); start = insert ( start, 6 );
start = insert ( start, 7 ); start = insert ( start, 8 );
start = insert ( start, 9 ); start = insert ( start, 10 );
start = insert ( start, 11 );
printf("The created list is\n");
printlist (start);
start = reverse_recurse_n(start,5,1);
printlist (start);
getch();
return 0;
}

(Continued on next question...)

Other Interview Questions