Answers for "reverse linked list in place"

C++
3

how to reverse a linked ist

class LinkedList { 
  
    static Node head; 
  
    static class Node { 
  
        int data; 
        Node next; 
  
        Node(int d) 
        { 
            data = d; 
            next = null; 
        } 
    } 
  
    /* Function to reverse the linked list */
    Node reverse(Node node) 
    { 
        Node prev = null; 
        Node current = node; 
        Node next = null; 
        while (current != null) { 
            next = current.next; 
            current.next = prev; 
            prev = current; 
            current = next; 
        } 
        node = prev; 
        return node; 
    } 
  
    // prints content of double linked list 
    void printList(Node node) 
    { 
        while (node != null) { 
            System.out.print(node.data + " "); 
            node = node.next; 
        } 
    } 
  
    public static void main(String[] args) 
    { 
        LinkedList list = new LinkedList(); 
        list.head = new Node(85); 
        list.head.next = new Node(15); 
        list.head.next.next = new Node(4); 
        list.head.next.next.next = new Node(20); 
  
        System.out.println("Given Linked list"); 
        list.printList(head); 
        head = list.reverse(head); 
        System.out.println(""); 
        System.out.println("Reversed linked list "); 
        list.printList(head); 
    } 
}
Posted by: Guest on August-27-2020
1

reverse linked list by k

//Iterative program in C++ to reverse a linked list in groups of k

//	(just before end of 2nd iteration of outer loop) [ 1->2->3->4->5->NULL ]
// 1 <- 2    3 <- 4  5 ->NULL   (k=2)
   ^		 ^		 ^
   |		 |		 |
prev_tail temp_head walker

void reverse_by_k(Node **head,int k){
    Node* temp_head = *head,*walker = *head,*prev_tail = NULL;
    while(walker){
        int i=0;
        Node *temp = NULL,*prev = NULL;
        //initialize temporary head to set previous tail later
        temp_head = walker;
        
        //reverse group of k nodes
        while(i<k && walker){
            temp = walker->next;
            walker->next = prev;
            prev = walker;
            walker = temp;
            i++;
        }
        
        if(prev_tail){
            //previous tail has to point to temporary head of current group
            prev_tail->next = prev;
            prev_tail = temp_head;
        } else{
            prev_tail = *head;
            *head = prev;
        }
    }
}
Posted by: Guest on September-20-2021
-1

reverse linkedlist

Collections.reverse(list);
Posted by: Guest on May-13-2021

Browse Popular Code Answers by Language