一次遍历完成单链表的反转 void ListReverse(LinkList &L) { if ( L->next==NULL || L->next->next==NULL) return;//空表或者只有一个元素,无需反转 LinkList pA,pB,pC; pA = pB =pC = NULL; while ( L->next->next!=NULL && L->next->next->next!=NULL) { pA = L->next; L->next = L->next->next->next; pA->next->next = pA; pB = pA->next; pA->next = pC; pC = pB; } if ( L->next->next!=NULL) { pA = L->next; L->next = L->next->next; pA->next->next = pA; pA->next = pC; } }