struct Node
{
int item;
int index;
struct Node* next;
};
typedef struct Node* Link;
Link Header;
void CreatedLink(int n)
{
if (n == 0)
{
return;
}
Link p;
struct Node dummy;
p = &dummy;
for (int i = 0;i < n;++i)
{
p->next = malloc(sizeof(*p));
p = p->next;
p->item = rand()%10;
p->index = i;
p->next = NULL;
}
Header = dummy.next;
}
void insertSort()
{
if ((Header == NULL)||(Header->next == NULL))
{
return;
}
Link p = Header->next,q = Header,u,prev = NULL;
q->next = NULL;
for (;p;p = u)
{
u = p->next;
for (prev = NULL,q = Header;q->next;prev = q,q = q->next)
{
if (p->item > q->item)
{
break;
}
}
if (q->next == NULL)
{
if (p->item < q->item)
{
p->next = q->next;
q->next = p;
}
else
{
p->next = Header;
Header = p;
}
}
else
{
if (prev)
{
p->next = q;
prev->next = p;
}
}
}
printf("\n");
}