反转链表,我们可以用一个链表 list 进行接收 head遍历的每一个节点的数值
1. 这样接收完的链表就变成了 :{1,3,2}
2.因为要输出数组 因此创建一个数组a 数组的长度就是链表的长度
3.然后循环遍历数组,每次都将链表最后一个赋给数组
即 a[i]=list.removeLast();
4.最后输出数组即可
代码
class Solution {
public int[] reversePrint(ListNode head) {
LinkedList list=new LinkedList<>();
//如果head为空直接返回空
if(head==null) return new int[]{};
while(head!=null){
list.addLast(head.val);
head=head.next; //向下遍历
}
int[] a =new int[list.size()];
for(int i=0;i
2.剑指 Offer 24. 反转链表
思路
要进行链表的反转, 因为存入的是节点,不想上一题是要输出数值即可,因此在用一个链表承载是不考虑的,一般向这种要对链表进行反转,一般情况是考虑多指针的问题
定义 cel=head 是一个临时节点; 一会要用于改变的
定义一个 pre =null 用于 cel.next=pre 就是用于存储反转的下一个节点
class Solution {
public ListNode reverseList(ListNode head) {
ListNode cel=head; //临时节点
ListNode pre=null; //初始化节点
while(cel!=null){
ListNode temp=cel.next; //存入cel下一个节点 放置cel改变next值后找不到下一个节点
cel.next=pre; //将cel的next修改为 初始化的节点
pre=cel;
cel=temp;
}
return pre; //当cel为空结束循环 这是最后一个节点其实就是pre 因此要输处pre
}
}
大家不懂的,还是要多画图,不要总是感觉自己想不到这种算法,想要放弃,其实初学者都是刚开始要理解别人的代码就可以,多刷慢慢就会有思路了。



