学习目标:
目标:熟练运用Java所学知识
学习内容:
本文内容:使用java解决 反转链表
题目描述
输入一个链表,反转链表后,输出新链表的表头。
解题思路
这个题有两种解法:
- 方法一:
创建一个新链表,每次从旧链表中取出元素,头插到新链表,就可以实现链表的反转
- 方法二:
使用三个临时引用,一个指向当前结点,一个指向当前结点的前一个结点,一个指向当前结点的下一个结点
每一次循环将当前结点的next指向前一个结点,递归更新三个结点的引用指向
实现代码
- 方法一:
public ListNode ReverseList(ListNode head) {
ListNode newHead=null;//新链表的头
ListNode cur=head;
while(cur!=null){
ListNode temp=cur;//使用临时变量记录当前结点
cur=cur.next;//更新cur
temp.next=newHead;//将临时变量的结点头插到新链表的头
newHead=temp;//更新新链表的头
}
return newHead;
}
- 方法二:
public ListNode ReverseList(ListNode head) {
if(head==null){
return null;
}
ListNode cur=head;//当前结点
ListNode prev=null;//当前结点的上一个结点
while(cur!=null){
ListNode nextNode=cur.next;//当前结点的下一个结点
cur.next=prev;//改变当前结点next的指向
prev=cur;//更新prev指向
cur=nextNode;//更新cur指向
}
return prev;
}