算法要求:链表头指针,p,q为工作指针。
具体实现思想:
如果链表的结点小于2,不用进行倒序。
如果大于2,从第二个结点开始,将每个结点移到链表的第一个结点,再将此结点的下一结点指向移动前链表的第一个结点。
void ReverseList(Node* pHead)
{
Node* p = pHead->next;
Node* q = 0;
while(p->next)
{
q = p->next;//指向p的下一个结点
q->next = pHead->next;//将q的下一个结点指向链表的第一个结点
pHead->next = q;//将q移到链表的第一结点
p->next = p->next->next;//p指向p的下一个结点的下一个结点
}
}
请各位看看这个算法如何