用两种方法实现对单链表的逆置操作
1. 用无线头插的方法实现
//逆置1 无线头插
bool Reverse1(PNode plist)
{
assert(plist != NULL);
PNode p = plist->next;
PNode q ;
plist->next = NULL;
while (p!=NULL)
{
q = p->next;
p->next = plist->next;
plist->next = p;
p = q;
}
return true;
}
2.借助三个临时指针逆置
//逆置2 用到三个临时指针
bool Reverse2(PNode plist)
{
assert(plist != NULL);
//确保存在两个节点
assert(plist->next != NULL);
assert(plist->next->next != NULL);
PNode q, p ,r;
p = plist->next;
q = p->next;
p->next = NULL;
while (q != NULL)
{
r = q->next;
q->next = p;
p = q;
q = r;
}
plist->next = p;
return true;
}