该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
//反转链表
//用三个指针标记 三个位置节点: pBefore、pCurrent、pAfter
void reverse_LinkList(struct LinkNode*pHeader) //pHeader:头结点
{
if(pHeader== NULL)
{
return;
}
struct LinkNode * pBefore =pHeader->next;
structLinkNode * pCurrent = pBefore->next;
if(pCurrent==NULL) //链表只有一个元素
{
return;
}
struct LinkNode * pAfter=pCurrent->next;
if(pAfter== NULL) //链表两个元素
{
pBefore->next= NULL;
}
while(pAfter!= NULL) // 多个元素
{
pCurrent->next = pBefore;
if(pHeader->next== pBefore)
{
pBefore->next= NULL;
}
pBefore= pCurrent;
pCurrent= pAfter;
pAfter= pAfter->next;
}
if(pCurrent!=NULL)
{
pCurrent->next= pBefore;
pHeader->next=pCurrent;
}
}