版权声明:转载请标明出处哦 https://blog.csdn.net/easy_purple/article/details/85003854
题目:反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
思路:
- 迭代:让当前节点的下一个节点是前节点,然后当前节点和下一个节点分别往后移。
- (递归)
算法
//迭代
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
if(head==null||head.next==null)//如果链表为空或者只有一个值那么返回他自己
return head;
ListNode preNode=null;//前一个节点
ListNode curNode=head;//当前节点
ListNode nextNode=null;//后一个节点
while(curNode!=null){
nextNode=curNode.next;//指向下一个节点
curNode.next=preNode;//当前节点的next指向前一个节点
preNode=curNode;//前一个节点后移
curNode=nextNode;//当前节点后移
}
return preNode;
}
}