head = pMng->pHead;
p = head->pNxt;
for(t=0; t<pMng->nNodeCnt-1; t++)
{
p = head->pNxt;
q = p->pNxt;
while(NULL != p)
{
q = p->pNxt;
if(p->nKey > q->nKey)
{
if(p == head->pNxt)
{
p->pNxt = q->pNxt;
q->pNxt->pPre = p;
p->pPre = q;
q->pNxt = p;
head->pNxt = q;
q->pPre = head;
}
else
{
p->pNxt = q->pNxt;
q->pNxt->pPre = p;
q->pPre = p->pPre;
q->pNxt = p;
p->pPre->pNxt = q;
p->pPre = q;
}
}
else
{
p = p->pNxt;
}
}
while(NULL != p)
{
q = p->pNxt;
if(p->nKey > q->nKey)
这p!=NULL,并不能保证p->pNxt不等于NULL啊,你直接就q->nKey开始操作,会崩溃的
数据结构对单链表进行数据排序 http://bbs.csdn.net/topics/392201633
程序运行不起来是运行报错还是执行了业务后,链表状态不变?
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!