链表逆转只需要逐个访问,然后把相邻两个结点的指向换过来就行了,不需要太多复杂的操作,表头表尾因为有空结点的存在可能需要特殊处理下。
List Reverse(List L) {
PtrToNode p = NULL; //前序指针
PtrToNode q = L; //当前结点
PtrToNode r; //后续结点
if (L != NULL) {
r = L->Next;
while (r) {
q->Next = p;
p = q;
q = r;
r = r->Next;
}
q->Next = p;
}
else //考虑到连头节点都没有的空链表情况,特意加了这种可能
q = L;
return q;
}
原文:https://www.cnblogs.com/Za-Ya-Hoo/p/12680462.html