In this Leetcode Reverse Linked List problem solution, we have given the head of a singly linked list, reverse the list, and return the reversed list.

Leetcode Reverse Linked List problem solution


Problem solution in Python.

def reverseList(self, current):
    """
    :type head: ListNode
    :rtype: ListNode
    """
    prev=None
    while current:
        curre_new = current.next
        current.next=prev
        prev = current           
        current = curre_new
    return prev



Problem solution in Java.

class Solution {
    public ListNode reverseList(ListNode head) {
        if(head == null)
            return null;
        ListNode first = null;
        ListNode sec = head;
        ListNode third = sec.next;
        while(third != null) {
            ListNode temp = third.next;
            sec.next = first;
            third.next = sec;
            first = sec;
            sec = third;
            third = temp;
        }
        return sec;
    }
}


Problem solution in C++.

class Solution {
public:
    ListNode* reverseList(ListNode* head) {        
        ListNode *aNode = head;
        ListNode *aPrev = NULL;
        ListNode *aNext = NULL;
        while (aNode != NULL) {
            aNext = aNode->next;
            aNode->next = aPrev;
            aPrev = aNode;
            aNode = aNext;    
        }
        return aPrev;
        
    }
};


Problem solution in C.

typedef struct ListNode NODE;

struct ListNode* reverseList(struct ListNode* head){
    if(head==NULL)
        return NULL;
    if(head->next==NULL)
        return head;
    int i=0;
    NODE *previous,*current;
    previous=(NODE *) malloc(sizeof(NODE));
    previous->val=head->val;
    while(head->next!=NULL){
        current=(NODE *) malloc(sizeof(NODE));
        current->val=head->next->val;
        head=head->next;
        current->next=previous;
        if(i==0)
            previous->next=NULL;
        previous=current;
        i++;
    }

    return current;
}