cur;
cur = cur->next;
}
pNode->next = prev->next;
prev->next = pNode;
return;
}
void sort_for_line_list(DIR_LINE** ppNode)
{
DIR_LINE* prev;
DIR_LINE* curr;
if(NULL == ppNode || NULL == *ppNode)
return;
curr = (*ppNode) ->next;
(*ppNode) ->next = NULL;
while(curr){
prev = curr;
curr = curr->next;
insert_for_sort_operation(ppNode, prev);
}
}
void insert_for_sort_operation(DIR_LINE** ppNode, DIR_LINE* pNode)
{
DIR_LINE* prev;
DIR_LINE* cur;
/* 在第一个数据之前插入pNode */
if(pNode->weight < (*ppNode)->weight){
pNode->next = *ppNode;
*ppNode = pNode;
return;
}
cur = *ppNode;
while(cur){
if(pNode->weight < cur->weight)
break;
prev = cur;
cur = cur->next;
}
pNode->next = prev->next;
prev->next = pNode;
return;
}
void sort_for_line_list(DIR_LINE** ppNode)
{
DIR_LINE* prev;
DIR_LINE* curr;
if(NULL == ppNode || NULL == *ppNode)
return;
curr = (*ppNode) ->next;
(*ppNode) ->next = NULL;
while(curr){
prev = curr;
curr = curr->next;
insert_for_sort_operation(ppNode, prev);
}
}
算法总结:
1)算法本身还有改进的空间,比如是不是内存分配上每一次都要重建DIR_LINE队列有待商榷
2)算法编写不是一部就位的,中间有反复更有删改,写四五次是很正常的事情
3)编写代码的时候最好做到边修改、边测试,这样可以一方面增加代码的健壮度,一方面还能提高自己的信心
4)如果存在可能,可以复用以前写过的、稳定的算法代码,比如说排序、查找、堆栈、二叉树之类的代码