/*对原链表进行排序,并组成有序链表*/
AD_PIC_LINK_T * CTI_AD_Pic_Sort(AD_PIC_LINK_T *head)
{
AD_PIC_LINK_T *first; /*有序链表的表头指针*/
AD_PIC_LINK_T *tail; /*有序链表的表头指针*/
AD_PIC_LINK_T *p_min; /*指向某次遍历中FileId最小的节点的前驱节点的指针*/
AD_PIC_LINK_T *min; /*指向某次遍历中FileId最小的节点的指针*/
AD_PIC_LINK_T *p;
first = NULL;
while(head != NULL)
{
/*循环遍历链表的节点,找出当前链表中最小的节点*/
for(p = head, min = head; p->pNext != NULL; p = p->pNext)
{
if(p->pNext->FileId < min->FileId)
{
p_min = p;
min = p->pNext;
}
}
/*组建有序链表,first指向该链表头结点*/
if(NULL == first)
{
first = min;
tail = min;
}
else
{
tail->pNext = min;
tail = min;
}
/*修改原链表,使min脱离原链表*/
if(min == head)
{
head = head->pNext;
}
else
{
p_min->pNext = min->pNext;
}
}
if(first != NULL)
{
tail->pNext = NULL;
}
return first;
}