Insertion Sort List :
Sort a linked list using insertion sort.
Sort a linked list using insertion sort.
#include<iostream>
#define LENGTH 7
using namespace std;
struct ListNode {
int val;
ListNode *next;
// ListNode(int x) : val(x), next(NULL) {}
};
class Solution {
public:
ListNode *insertionSortList(ListNode *head)
{
ListNode *pre=NULL,*curr=NULL,*f_pre=NULL,*f_curr=NULL;
if(head==NULL||head->next==NULL)
return(head);
f_curr=head;
curr=head->next;
while(curr!=NULL)
{
pre=head->next;
f_pre=head;
while(pre->val<=curr->val&&pre!=curr)
{
f_pre=pre;
pre=pre->next;
}
if(pre!=curr)
{
f_curr->next=curr->next;
f_pre->next=curr;
curr->next=pre;
curr=f_pre;
}
f_curr=curr;
curr=curr->next;
}
return(head);
}
};
void main()
{
Solution s;
ListNode *head=new ListNode,*p=NULL,*curr=NULL;
p=head;
for(int i=1;i<=LENGTH;i++)
{
curr=new ListNode;
cin>>curr->val;
p->next=curr;
p=curr;
}
p->next=NULL;
p=s.insertionSortList(head)->next;
while(p!=NULL)
{
cout<<p->val<<"\n";
p=p->next;
}
}