def partition(head, x): beforeStart = ll.Node() beforeEnd = ll.Node() afterStart = ll.Node() afterEnd = ll.Node() while (head): next = head.next head.next = ll.Node() if head.next < x: #Insert node into end of beforeList if beforeStart.val == None: beforeStart = head beforeEnd = beforeStart else: beforeEnd.next = head beforeEnd = head else: #Insert node into end of afterList if afterStart.val == None: afterStart = head afterEnd = afterStart else: afterEnd.next = head afterEnd = head head = next if beforeStart.val == None: return afterStart beforeEnd.next = afterStart return beforeStart
def test_deleteMiddleNode2(): list = ll.Node(1) list.next = ll.Node(2) list.next.next = ll.Node(3) rlist = deleteMiddleNode.deleteMiddleNode(list) assert rlist.val == 1 assert rlist.next.val == 3
def removeDups(head): valdict = [] prev = ll.Node() i = 0 while (head): if head.val in valdict: prev.next = head.next else: valdict.append(head.val) prev = head head = head.next i += 1 return head
def test_partition1(): ''' Example: 3-> 5 -> 8 -> 5 -> 10 -> 2 -> 1 [partition = 5] Output: 3 -> 1 -> 2 -> 10 -> 5 -> 5 -> 8 ''' list = ll.Node(3) list.next = ll.Node(5) list.next.next = ll.Node(8) list.next.next.next = ll.Node(5) list.next.next.next.next = ll.Node(10) list.next.next.next.next.next = ll.Node(2) list.next.next.next.next.next.next = ll.Node(1) newList = partition.partition(list, 5) assert newList.next.val == 3
def test_deleteMiddleNode1(): list = ll.Node(1) list.next = ll.Node(2) assert deleteMiddleNode.deleteMiddleNode(list) == None
# Reverse Linked List ## Mitchell Ciupak ## 20210303 import linkedLists as ll def reverse_linkedlist(head): nxt = head.next curr = head last = None while curr is not None: nxt = curr.next #store curr.next = last #swap last = curr #update curr = nxt #incrament head = last return head head = ll.Node(1) head.next = ll.Node(2) head.next.next = ll.Node(3) head = reverse_linkedlist(head) ll.printLL(head=head)