1.题目描述
输入一个链表,反转链表后,输出新链表的表头。
2.算法描述
1.新建一个头节点作为新链表的头节点。返回的时候返回头节点的下一个结点。
2.遍历链表,将每一个结点以头插法的方式插入新链表。头插法就是每次插入到链表的开始位置。
3.代码描述
3.1.Java代码
/*
public class ListNode{
int val;
ListNode next = null;
public ListNode(int val){
this.val = val;
}
}
*/
public class Solution {
public ListNode ReverseList(ListNode head) {
ListNode cur = head;
ListNode newHead = new ListNode(-1);
while(cur != null){
ListNode pre = cur;
cur = cur.next;
pre.next = newHead.next;
newHead.next = pre;
}
return newHead.next;
}
}
3.2.Python代码
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
# 返回ListNode
def ReverseList(self, pHead):
# write code here
cur = pHead
newHead = ListNode(-1)
while cur:
pre = cur
cur = cur.next
pre.next = newHead.next
newHead.next = pre
return newHead.next