链表:反转链表

反转链表。
反转链表,常用的方法有就地反转,新建链表反转,栈反转,递归反转

就地反转

比如,现有链表1->2->3->4->5,首先,将1->null,接着向下一个节点2迭代,将2->1,接着向下一个节点3迭代,将3->2,也就是变成了3->2->1,依此类推。
如下:

public ListNode reserveListNode(ListNode head)  {
	   ListNode prev=null;
	    ListNode curr=head;
	   while( curr!=null){
         //先记住下一个节点
		 ListNode nextNode=curr.next;    
         //将当前节点的指针,指向"上一个节点",形成反转
		 curr.next=prev;              
        //存储当前节点,以便作为迭代后的"上一个节点"。
		 prev=curr;                    
         //向下一个节点迭代
		 curr=nextNode;              
	}
}

栈反转

栈具有先进后出的特性。将链表的节点逐个push进栈里面,再pop出来,就完成了链表的反转

原文地址:https://www.cnblogs.com/expiator/p/10630481.html