标签:方式 public temp lis 防止 输出 处理 loading 设置
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
**示例
输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL
迭代法(头插法):
画图分析:设置一个前节点为null,再用临时变量保存当前节点的下一个节点,然后将当前节点的下一节点指向设置的前一节点,最后将前一节点后移,当前节点后移。
代码一:
public static ListNode reverseList(ListNode head) {
if(head==null||head.next==null){
return head;
}
ListNode prev=null;//当前节点的前一节点
ListNode curr=head;//当前节点
while(curr!=null){
ListNode temp=curr.next;//临时变量存当前节点的下一个节点
curr.next=prev;//当前指针指向它前面的节点
prev=curr;//指针后移
curr=temp;//指针后移,处理下一个节点
}
return prev;
}
递归法:
先反转后面的链表,从最后两个节点开始反转,依次向前,将后一个节点指向前一个节点,再讲前一个节点指针域置为空,表示将原链表中前一个节点指向后一个节点的指向关系断开。
代码二:
public ListNode reverseList(ListNode head) {
//递归结束
if(head==null||head.next==null){
return head;
}
ListNode newNode=reverseList(head.next);
head.next.next=head;
head.next=null;//防止链表循环
return newNode;
}
标签:方式 public temp lis 防止 输出 处理 loading 设置
原文地址:https://www.cnblogs.com/ghlz/p/13396169.html