在头结点的后面依次插入后面的结点,q从第二个结点向后移动遍历,p永远在第一个结点完成头插法逆置单链表。
void reverseL(Linklist &L){//头插法逆转单链表if(L!=NULL){LNode* p=L->next;//p等于第一个结点LNode* q=p->next;//q等于第二个结点p->next=NULL;//最后一个结点next为nullwhile(q!=NULL){L->next=q;//第二个结点开始插入到头结点后q=q->next;//q往后移动L->next->next=p;//第一个结点指向第二个结点p=L->next;//p指向第一个结点}}
}
链表元素:1 2 3 4 5
逆置后的链表元素:5 4 3 2 1 Program ended with exit code: 0