Sort by

recency

|

690 Discussions

|

  • + 0 comments

    My code in c++:

    DoublyLinkedListNode* reverse(DoublyLinkedListNode* llist) {
        if(llist == NULL) return NULL;
        else if(llist->next == NULL) return llist;
       ``
        DoublyLinkedListNode* re = new DoublyLinkedListNode(llist->data);
        llist = llist->next;
        while(llist != NULL){
            DoublyLinkedListNode* x = new DoublyLinkedListNode(llist->data);
            x->next = re;
            re->prev = x;
            re = x;
    
        llist = llist->next;
    }
    return re;
    

    }

  • + 0 comments

    This is the easiest and most efficient way I've found to reverse a doubly linked list in python 3

    #!/bin/python3
    
    import math
    import os
    import random
    import re
    import sys
    
    class DoublyLinkedListNode:
        def __init__(self, node_data):
            self.data = node_data
            self.next = None
            self.prev = None
    
    class DoublyLinkedList:
        def __init__(self):
            self.head = None
            self.tail = None
    
        def insert_node(self, node_data):
            node = DoublyLinkedListNode(node_data)
    
            if not self.head:
                self.head = node
            else:
                self.tail.next = node
                node.prev = self.tail
    
    
            self.tail = node
    
    def print_doubly_linked_list(node, sep, fptr):
        while node:
            fptr.write(str(node.data))
    
            node = node.next
    
            if node:
                fptr.write(sep)
    
    #
    # Complete the 'reverse' function below.
    #
    # The function is expected to return an INTEGER_DOUBLY_LINKED_LIST.
    # The function accepts INTEGER_DOUBLY_LINKED_LIST llist as parameter.
    #
    
    #
    # For your reference:
    #
    # DoublyLinkedListNode:
    #     int data
    #     DoublyLinkedListNode next
    #     DoublyLinkedListNode prev
    #
    #
    
    def reverse(head):
        # Write your code here
        if head is None:
            return None
        curr = head
        while curr:
            curr.prev, curr.next = curr.next, curr.prev
            head = curr
            curr = curr.prev
        return head
    
    if __name__ == '__main__':
        fptr = open(os.environ['OUTPUT_PATH'], 'w')
    
        t = int(input())
    
        for t_itr in range(t):
            llist_count = int(input())
    
            llist = DoublyLinkedList()
    
            for _ in range(llist_count):
                llist_item = int(input())
                llist.insert_node(llist_item)
    
            llist1 = reverse(llist.head)
    
            print_doubly_linked_list(llist1, ' ', fptr)
            fptr.write('\n')
    
        fptr.close()
    
  • + 0 comments
    def reverse(llist):
        head = llist
        last = None    # hold onto last visited note
        while head:
    		
            tmp = head.next
            head.next = head.prev
            head.prev = tmp
    				
            last = head
            head = tmp
        return last
    		
    
  • + 0 comments

    This problem's C# definition of DoublyLinkedListNode and DoublyLinkedList are buggy.

    The way the author of this problem defined these classes in C# requires that the classes' fields (i.e., prev, next, head, tail) be set to a non-null values before exiting the constructor, and the classes' constructors aren't written to allow these parameters to be passed in.

    So it will always fail if you try to solve this problem in C#.

    Here's the full exception:

    /tmp/submission/20241104/05/55/hackerrank-71c387b303654a6e1a4f4f7510a502c7/code/Solution.cs(24,25): warning CS8625: Cannot convert null literal to non-nullable reference type. [/tmp/submission/20241104/05/55/hackerrank-71c387b303654a6e1a4f4f7510a502c7/code/Solution.csproj] /tmp/submission/20241104/05/55/hackerrank-71c387b303654a6e1a4f4f7510a502c7/code/Solution.cs(25,25): warning CS8625: Cannot convert null literal to non-nullable reference type. [/tmp/submission/20241104/05/55/hackerrank-71c387b303654a6e1a4f4f7510a502c7/code/Solution.csproj] /tmp/submission/20241104/05/55/hackerrank-71c387b303654a6e1a4f4f7510a502c7/code/Solution.cs(22,16): warning CS8618: Non-nullable field 'next' must contain a non-null value when exiting constructor. Consider declaring the field as nullable. [/tmp/submission/20241104/05/55/hackerrank-71c387b303654a6e1a4f4f7510a502c7/code/Solution.csproj] /tmp/submission/20241104/05/55/hackerrank-71c387b303654a6e1a4f4f7510a502c7/code/Solution.cs(22,16): warning CS8618: Non-nullable field 'prev' must contain a non-null value when exiting constructor. Consider declaring the field as nullable. [/tmp/submission/20241104/05/55/hackerrank-71c387b303654a6e1a4f4f7510a502c7/code/Solution.csproj] /tmp/submission/20241104/05/55/hackerrank-71c387b303654a6e1a4f4f7510a502c7/code/Solution.cs(34,25): warning CS8625: Cannot convert null literal to non-nullable reference type. [/tmp/submission/20241104/05/55/hackerrank-71c387b303654a6e1a4f4f7510a502c7/code/Solution.csproj] /tmp/submission/20241104/05/55/hackerrank-71c387b303654a6e1a4f4f7510a502c7/code/Solution.cs(35,25): warning CS8625: Cannot convert null literal to non-nullable reference type. [/tmp/submission/20241104/05/55/hackerrank-71c387b303654a6e1a4f4f7510a502c7/code/Solution.csproj] /tmp/submission/20241104/05/55/hackerrank-71c387b303654a6e1a4f4f7510a502c7/code/Solution.cs(33,16): warning CS8618: Non-nullable field 'head' must contain a non-null value when exiting constructor. Consider declaring the field as nullable. [/tmp/submission/20241104/05/55/hackerrank-71c387b303654a6e1a4f4f7510a502c7/code/Solution.csproj] /tmp/submission/20241104/05/55/hackerrank-71c387b303654a6e1a4f4f7510a502c7/code/Solution.cs(33,16): warning CS8618: Non-nullable field 'tail' must contain a non-null value when exiting constructor. Consider declaring the field as nullable. [/tmp/submission/20241104/05/55/hackerrank-71c387b303654a6e1a4f4f7510a502c7/code/Solution.csproj] /tmp/submission/20241104/05/55/hackerrank-71c387b303654a6e1a4f4f7510a502c7/code/Solution.cs(119,43): error CS0103: The name 'reverse' does not exist in the current context [/tmp/submission/20241104/05/55/hackerrank-71c387b303654a6e1a4f4f7510a502c7/code/Solution.csproj] /tmp/submission/20241104/05/55/hackerrank-71c387b303654a6e1a4f4f7510a502c7/code/Solution.cs(105,50): warning CS8604: Possible null reference argument for parameter 'path' in 'StreamWriter.StreamWriter(string path, bool append)'. [/tmp/submission/20241104/05/55/hackerrank-71c387b303654a6e1a4f4f7510a502c7/code/Solution.csproj]

  • + 0 comments

    DoublyLinkedListNode* reverse(DoublyLinkedListNode* llist) { DoublyLinkedListNode *curr; curr=llist; while(curr->next!=NULL){ curr=curr->next; } DoublyLinkedListNode *head; head=curr; DoublyLinkedListNode *temp; DoublyLinkedListNode *count=NULL; while(curr!=NULL){ temp=curr->prev; curr->next=temp; curr->prev=count; count=curr; curr=temp;

    }hhere is three poimter approach

    return head; }