反转链表
反转一个单链表。
示例:
输入: 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
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

浙公网安备 33010602011771号