反转链表

反转一个单链表。

示例:

输入: 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) {
        ListNode newhead=new ListNode(0);
        ListNode temp=head;//创建新的头结点
        while(temp!=null){//遍历原来链表
            ListNode ptemp=temp;//取下原来链表的节点
            temp=temp.next;//指针后移
            ptemp.next=newhead.next;//插入新的链表的头部
            newhead.next=ptemp;
        }
        return newhead.next;
    }
}

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-linked-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

posted @ 2020-02-04 11:00  梦小冷  阅读(76)  评论(0)    收藏  举报