minimanimoh / Udacity_DS-A

0 stars 0 forks source link

DS&A - 2. Data Structures - Lesson 1. Reverse a Linked List #8

Open minimanimoh opened 3 years ago

minimanimoh commented 3 years ago

Reversing a linked list exercise Given a singly linked list, return another linked list that is the reverse of the first.

# Helper Code

class Node:
    def __init__(self, value):
        self.value = value
        self.next = None

class LinkedList:
    def __init__(self):
        self.head = None

    def append(self, value):
        if self.head is None:
            self.head = Node(value)
            return

        node = self.head
        while node.next:
            node = node.next

        node.next = Node(value)

    def __iter__(self):
        node = self.head
        while node:
            yield node.value
            node = node.next

    def __repr__(self):
        return str([v for v in self])
# Time complexity O(N)
def reverse(linked_list):
    new_list = LinkedList()
    node = linked_list.head
    prev_node = None

    for value in linked_list:
        new_node = Node(value)
        new_node.next = prev_node
        prev_node = new_node
    new_list.head = prev_node
    return new_list
minimanimoh commented 3 years ago
Args:
   linked_list(obj): Linked List to be reversed
Returns:
   obj: Reveresed Linked List
minimanimoh commented 3 years ago

pain in my ass...

**for value in linked_list:
    new_node = Node(value)
    new_node.next = prev_node
    prev_node = new_node
new_list.head = prev_node**