1、递归方法:
static Node changeLinkedList(Node node){
if(node==null||node.next==null){
return node;//说明压根就他一个元素没必要反转,或者到了最后一个节点了
}else{
Node node=changeLinkedList(node.next);//采取递归的思想移动位置
node.next.next=node;//让后面那个node的next指针指向当前这个node
node.next=null;//把前面的那个next指针消除,防止出现循环
return node;
}
}
2、遍历法
/*
大致的流程就是,设置一个pre指向null,设置curr指向当前要反转的链表,让curr的next直向pur,让后curr后移 pur也后移 。
*/
static Node changeLinkedList(Node node){
Node pre=null;//让pur指向null
Node curr=node;//让curr指向链表
//设置一个结束标记,当curr==null时说明已经遍历结束了
while(curr!=null){
Node temp=curr.next;//当前node节点的下一个指针
curr.next=pre;
pre=cur;
cur=temp;
}
return pre;
}