def main(): head = Node(10) head.appendToTail(20, 's') head.appendToTail(46, 's') head.appendToTail(7654, 's') head.printLinkedList() print(kthElement(head, 3)) head.printLinkedList()
def main(): head = Node(10) head.appendToTail(20, 's') head.appendToTail(46, 's') head.appendToTail(7654, 's') head.printLinkedList() midNode = head.findNode(10) delMiddleNode(midNode) head.printLinkedList()
def main(): head = Node(10) head.appendToTail(20) head.appendToTail(50) # Dupe head.appendToTail(30) head.appendToTail(120) head.appendToTail(50) # Dupe head.appendToTail(10) head.appendToTail(15) head.printLinkedList() removeDupesDoubly(head) # Should remove Dupes from LinkedList head.printLinkedList() return
while (p): if p.val < pValue: before.append(p.val) elif p.val == pValue: p = p.next continue else: after.append(p.val) p = p.next # Make new list with before - pValue - after new_list = [] new_list.extend(before) new_list.append(pValue) new_list.extend(after) p = head # iterate through linkedlist and change values for i in range(len(new_list)): p.val = new_list[i] p = p.next return if __name__ in '__main__': head = Node(10) head.appendToTail(46, 's') head.appendToTail(20, 's') head.appendToTail(7654, 's') head.printLinkedList() partition_linked_list(head, 46) head.printLinkedList()
if pB in visited: return pB if pA is pB: return pA visited.add(pA) visited.add(pB) if pA: pA = pA.next if pB: pB = pB.next return None if __name__ in '__main__': # Making A LinkedLIst headA = Node(10) headA.next = Node(20) # Making B LinkedList headB = Node(765) headB.next = Node(543) headB.next.next = Node(432) # Creating Intersecting Node and appendingn to lists intersectNode = Node(40) headA.next.next = intersectNode headB.next.next.next = intersectNode # adding some more fluff nodes headA.next.next.next = Node(50) headA.next.next.next.next = Node(53) headA.printLinkedList() headB.printLinkedList() print(intersection(headA, headB).val)
from Data_structures import Node def loop_checker(head): visited = set() if head is None or head.next is None: raise ValueError("Head or Head.next is None") p = head visited.add(p) p = p.next while (p): if p in visited: return p else: visited.add(p) p = p.next return None if __name__ in '__main__': head = Node(10) head.next = Node(20) cycleNode = Node(40) head.next.next = cycleNode head.next.next.next = Node(50) head.next.next.next.next = Node(53) head.next.next.next.next.next = cycleNode # Can not print linkedList, as there's a cycle # head.printLinkedList() print(loop_checker(head).val)
return False return True def is_palindrome_stack(head): myStack = Stack() p = head # First Pass, put all values in Stack while (p is not None): myStack.push(p.val) p = p.next # second pass p = head while (p is not None): if p.val != myStack.pop(): return False else: p = p.next return True if __name__ in '__main__': head = Node('R') head.appendToTail('A') head.appendToTail('D') head.appendToTail('A') head.appendToTail('R') head.printLinkedList() print(is_palindrome_node(head)) print(is_palindrome_stack(head))