Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Libraries Included:
- # Numpy, Scipy, Scikit, Pandas
- print "Hello, world!"
- class Node(object):
- def __init__(self, val=None, next=None):
- self.val = val
- self.next = next
- def append(self, next):
- if not isinstance(next, Node):
- raise RuntimeError("Not node!")
- self.next = next
- return next
- def print_linked_list(node):
- print node.val
- if node.next:
- print_linked_list(node.next)
- def reverse(node):
- if not node:
- return node
- previous = None
- current = node
- while current:
- next = current.next
- current.next = previous
- previous = current
- current = next
- return previous
- def reverse_k_only(node, k):
- if not node:
- return node
- previous = None
- current = node
- end_of_k = current
- while current and k > 0:
- next = current.next
- current.next = previous
- previous = current
- current = next
- k -= 1
- end_of_k.next = current
- return previous, end_of_k
- def reverse_in_k_group(node, k):
- if k == 0:
- return node
- start, end_of_k = reverse_k_only(node, k)
- while end_of_k.next:
- old_end_of_k = end_of_k
- new_start, end_of_k = reverse_k_only(end_of_k.next, k)
- old_end_of_k.next = new_start
- return start
- def reverse_in_variable_k_group(node, k):
- start, end_of_k = reverse_k_only(node, k)
- k -= 1
- while end_of_k.next and k > 0:
- old_end_of_k = end_of_k
- new_start, end_of_k = reverse_k_only(end_of_k.next, k)
- old_end_of_k.next = new_start
- k -= 1
- if k == 0:
- end_of_k.next = None
- return start
- head = Node(1)
- next = head
- for i in range(2,10):
- next = next.append(Node(i))
- print_linked_list(head)
- reversed = reverse_in_variable_k_group(head, 7)
- print_linked_list(reversed)
Add Comment
Please, Sign In to add comment