Sort LL in blocks of K
struct node* SortLL(struct node* head)
{
struct node* temp;
struct node* orighead;
struct node* minnode;
int current, min, swap;
temp = head;
orighead = head;
if(head == NULL) return NULL;
if(head-> next == NULL) return head;
while(head != NULL)
{
temp = head;
current = temp->data;
min = current;
temp = temp->next;
while(temp != NULL)
{
if(min > temp->data)
{
min = temp->data;
minnode = temp;
}
temp = temp->next;
}
if(current > min)
{ //swap the two values
swap = head->data;
head->data = minnode->data;
minnode->data = swap;
}
head = head->next;
}
return orighead;
}
struct node* SortLLinBlockK(struct node* head, int k)
{
struct node* nexthead = head;
struct node* orighead = head;
struct node* temp;
int i;
k=k-1;
while(head != NULL)
{
for( i = 0; i<k; i++)
{
nexthead = nexthead->next;
if (nexthead == NULL)
break;
}
if(i == k)
{
temp = nexthead->next;
nexthead->next = NULL;
nexthead = temp;
}
SortLL(head);
while(head->next !=NULL)
{
head = head->next;
}
if (i == k)
{
head->next = nexthead;
head = nexthead;
}
else
head = head->next;
}
return orighead;
{
struct node* temp;
struct node* orighead;
struct node* minnode;
int current, min, swap;
temp = head;
orighead = head;
if(head == NULL) return NULL;
if(head-> next == NULL) return head;
while(head != NULL)
{
temp = head;
current = temp->data;
min = current;
temp = temp->next;
while(temp != NULL)
{
if(min > temp->data)
{
min = temp->data;
minnode = temp;
}
temp = temp->next;
}
if(current > min)
{ //swap the two values
swap = head->data;
head->data = minnode->data;
minnode->data = swap;
}
head = head->next;
}
return orighead;
}
struct node* SortLLinBlockK(struct node* head, int k)
{
struct node* nexthead = head;
struct node* orighead = head;
struct node* temp;
int i;
k=k-1;
while(head != NULL)
{
for( i = 0; i<k; i++)
{
nexthead = nexthead->next;
if (nexthead == NULL)
break;
}
if(i == k)
{
temp = nexthead->next;
nexthead->next = NULL;
nexthead = temp;
}
SortLL(head);
while(head->next !=NULL)
{
head = head->next;
}
if (i == k)
{
head->next = nexthead;
head = nexthead;
}
else
head = head->next;
}
return orighead;
}
Comments
Post a Comment