翻转单链表
方法一:将单链表头插到一个新链表中
浪费空间,不过简单
方法二:使用三个指针遍历单链表,逐个点进行翻转
p=head
q=head->next
head->next=null
while(q->next!=null){
r=q->next
q->next=p
p=q
q=r
}
方法三:从第三个节点到最后一个节点,依次将其插入到第一个节点之后,最后将第一个节点移到表尾
ListNode* p;
ListNode* q;
p=head->next;
while(p->next!=NULL){
q=p->next;
p->next=q->next;
q->next=head->next;
head->next=q;
}
p->next=head;//相当于成环
head=p->next->next;//新head变为原head的next
p->next->next=NULL;//断掉环
return head;
网友评论