今天刷题时遇到了一道反转单链表的题,觉得很有必要总结一下,
做题思路:
1.先判断链表是否为空
//判断链表是否为空
if ( head ==null || head.next == null ) {
return head;
}
2.创建一个新的头节点
//创建一个新的头节点
ListNode newListNodeHead = new ListNode();
3.创建一个辅助变量,用于指向头节点的下一个节点,再创建一个辅助节点用于指向下一个节点。
//定义一个辅助变量
ListNode temp = head;
//在定义一个辅助变量,用于辅助指向下一个节点
ListNode next = null;
4.循环遍历单链表,并将遍历的节点依次与新建的头节点相连。
//循环遍历整个节点
while (temp != null) {
//将temp指向下一个节点
next = temp.next;
temp.next= newListNodeHead.next;
//将取出的节点与新的头节点相连
newListNodeHead.next = temp;
//将temp指向下一个节点
temp = next;
}
5.将原来的头节点指向新创建的头节点的下一个节点,并返回其头节点。
//将原来头节点的指向反转之后的链表
head = newListNodeHead.next;
return head;
个人思路,如有问题请提出。