leetcode-反转链表
前言
反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
提示:你可以迭代或递归地反转链表。
二、算法
解法1(示例):
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
//新的listNode,初始化为null,因为第一次循环只能拼接一个元素
ListNode listNodeNew = null;
//创建新的容器
ListNode listNodeNext= head;
while(null!=listNodeNext){
//存储以保证循环
ListNode listTemp = listNodeNext.next;
//下个节点连接已经拼好的listNodeNew
listNodeNext.next = listNodeNew;
//赋值给新的listNodeNew
listNodeNew=listNodeNext;
//恢复循环
listNodeNext = listTemp;
}
return listNodeNew;
}
}
总结:第一次循环得到:1,第二次循环得到2,1,第三次循环得到3,2,1...