翻转单链表

翻转单链表

方法一:将单链表头插到一个新链表中

浪费空间,不过简单


方法二:使用三个指针遍历单链表,逐个点进行翻转

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;  

你可能感兴趣的:(翻转单链表)