反转链表
题目描述:
输入一个链表,反转链表后,输出新链表的表头。
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode ReverseList(ListNode head) {
if(head == null){
return head;
}
//pre表示平pNode前一个结点
ListNode pre = null;
//pNode表示当前结点
ListNode pNode = head;
//newNode表示反转后新的头结点
ListNode newNode = null;
//表示pNode的下一个结点
ListNode next = null;
while(pNode!=null){
//将当前结点的下一条保存在next中
next = pNode.next;
//next为null说明当前结点pNode是最后一个结点,把pNode赋给newNode
if(next==null){
newNode = pNode;
}
//如果当前结点pNode不是最后一个结点
//让当前结点的下一跳指向pre
//再让pre指向当前结点pNode的位置
//最后让pNode指向next的位置,互换位置。
pNode.next = pre;//
pre = pNode;
pNode = next;
}
return newNode;
}
}
本文深入探讨了链表数据结构的反转算法实现,通过详细步骤解释如何改变链表节点的指针方向,实现链表的反转,并提供了一个完整的Java代码示例。
1103

被折叠的 条评论
为什么被折叠?



