Example #1
0
from linked_list import Node

l1 = Node()
l1.insert_at_beginning(7)
l1.insert_at_end(2)
l1.insert_at_end(4)
l1.insert_at_end(3)
# l1.insert_at_end(5)

l2= Node()
l2.insert_at_beginning(5)
l2.insert_at_end(6)
l2.insert_at_end(4)



class ListNode(object):
    def __init__(self, x):
        self.data = x
        self.next = None

class Solution(object):
    def addTwoNumbers(self, l1, l2):
        """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """
        l1 = self.reverse(l1)
        l2 = self.reverse(l2)
        
"""
Reverse a Linked List with O(1) space, without using recursion.
"""
import copy
from linked_list import Node

node = Node()
node.insert_at_beginning(1)
node.insert_at_end(2)
node.insert_at_end(3)
node.insert_at_end(4)
node.insert_at_end(5)

prev_node = None
next_node = node.head.next
while (True):
    node.head.next = prev_node
    if next_node == None:
        break
    prev_node = node.head
    node.head = next_node
    next_node = next_node.next

node.print_list()
Example #3
0
"""
Merge sort of a linked list
"""

from linked_list import Node

node = Node()
node.insert_at_beginning(5)
node.insert_at_beginning(2)
node.insert_at_beginning(1)
node.insert_at_beginning(10)
node.insert_at_beginning(-1)
node.insert_at_beginning(30)
node.insert_at_beginning(12)
node.insert_at_beginning(6)

node.print_list()
    
def get_middle(head):
    slowptr = head
    fastptr = head

    while fastptr and fastptr.next:
        slowptr = slowptr.next
        fastptr = fastptr.next.next
    
    return slowptr

def sorted_merge(left, right):
    if not left:
        return right
from linked_list import Node

node = Node()
node.insert_at_beginning(5)
node.insert_at_beginning(4)
node.insert_at_beginning(2)
node.insert_at_beginning(1)


def insert_in_sorted_list(node, item):
    previous = None
    current = node.head
    stop = False

    while current != None and not stop:
        if current.data > item:
            stop = True
        else:
            previous = current
            current = current.next

    temp = Node(item)
    if previous == None:
        temp.next = node.head
        node.head = temp
    else:
        temp.next = current
        previous.next = temp


insert_in_sorted_list(node, 3)