将单链表逆序
单链表的逆置
遍历一遍单链表,利用一个辅助指针存储遍历过程中当前指针指向下一个元素,然后将当前元素的指针反转,利用已经存储的指针往后继续遍历
node *reverse(node *head)
{
node *p,*q,*r;
if(head->next==NULL)//链表为空
{
return head;
}
p=head->next;
q=p->next;//保存原第二个节点
p->next=NULL;//原第一个节点为末节点
while(q!=NULL)//遍历各个节点的next指针反转
{
r=q->next;
q->next=p;
p=q;
q=r;
}
head->next=p;//新的第一个节点为原末节点
return head;
}