def sum_lists_forward(listOne, listTwo): numOne = build_number_from_list_forward(listOne) numTwo = build_number_from_list_forward(listTwo) sumNum = numOne + numTwo returnList = LinkedList() while sumNum != 0: quotient = sumNum / 10 remainder = sumNum % 10 returnList.appendToTail(remainder) sumNum = quotient return returnList
from linked_list import LinkedList ll = LinkedList() input_list = [3, 5, 8, 10, 8, 5, 4] for i in input_list: ll.appendToTail(i) reversed_ll = LinkedList() for i in input_list: reversed_ll.appendToTail(i) reversed_ll.reverse() reversed_ll.list_print()
def is_palindrome(linkedList): palindromeStr = "" node = linkedList.head while node is not None: palindromeStr += node.data node = node.nextNode palindromeStr = palindromeStr.replace(" ", "") reversedPalindrome = palindromeStr[::-1] return palindromeStr == reversedPalindrome linkedList = LinkedList() linkedList.appendToTail('r') linkedList.appendToTail('a') linkedList.appendToTail('c') linkedList.appendToTail('e') linkedList.appendToTail('c') linkedList.appendToTail('a') linkedList.appendToTail('r') print(is_palindrome(linkedList)) linkedList = LinkedList() linkedList.appendToTail('r') linkedList.appendToTail('a') linkedList.appendToTail('w') linkedList.appendToTail('r') print(is_palindrome(linkedList))
from linked_list import LinkedList input_list = [0, 1, 2, 2, 2, 3, 3, 3, 4, 5, 6, 6, 6] ll = LinkedList() for elem in input_list: ll.appendToTail(elem) ll.list_print() def dup(): curr = ll.head dup_checker = set() while (curr): if (curr.data not in dup_checker): dup_checker.add(curr.data) else: ll.remove(curr.data) curr = curr.next ll.list_print() def no_dup(): curr = ll.head.next runner = ll.head while (curr): while (runner.next is not curr.next): if (runner.data == curr.data): ll.remove(curr.data) runner = ll.head else: runner = runner.next
returnList = LinkedList() while sumNum != 0: quotient = sumNum / 10 remainder = sumNum % 10 returnList.appendToTail(remainder) sumNum = quotient return returnList linkedListOne = LinkedList() linkedListOne.appendToTail(7) linkedListOne.appendToTail(1) linkedListOne.appendToTail(6) linkedListTwo = LinkedList() linkedListTwo.appendToTail(5) linkedListTwo.appendToTail(9) linkedListTwo.appendToTail(2) rtnList = sum_lists(linkedListOne, linkedListTwo) rtnList.printList() linkedListOne = LinkedList() linkedListOne.appendToTail(6) linkedListOne.appendToTail(1) linkedListOne.appendToTail(7)
from linked_list import LinkedList ll = LinkedList() for i in range(10): ll.appendToTail(i) curr = ll.head half_runner = ll.head flip = False while(curr.next): if(flip): flip = False half_runner = half_runner.next else: flip = True curr = curr.next ll.remove_by_node(half_runner) ll.list_print()
def removeDuplicates(linkedList): if linkedList.head is None: return dataPoints = {} node = linkedList.head prevNode = None while node is not None: if dataPoints.get(node.data) is None: dataPoints[node.data] = True else: print("removed " + node.data) if node.nextNode is None: prevNode.nextNode = None else: prevNode.nextNode = node.nextNode prevNode = node node = node.nextNode linkedList = LinkedList() linkedList.appendToTail("1") linkedList.appendToTail("2") linkedList.appendToTail("2") linkedList.appendToTail("3") linkedList.appendToTail("1") removeDuplicates(linkedList) linkedList.printList()
if length == 0 or k > length: return #empty elementToRemove = length - k currentIndex = 0 node = linkedList.head prevNode = None while currentIndex < elementToRemove: prevNode = node node = node.nextNode currentIndex += 1 if prevNode is None: linkedList.head = linkedList.head.nextNode else: prevNode.nextNode = node.nextNode return linkedList = LinkedList() linkedList.appendToTail("1") linkedList.appendToTail("2") linkedList.appendToTail("3") linkedList.appendToTail("4") linkedList.appendToTail("5") removeKthToLast(linkedList, 3) linkedList.printList()
prevNode = None nodesToReattach = [] while node is not None: if node.data >= pValue: if prevNode is None: linkedList.head = node.nextNode else: prevNode.nextNode = node.nextNode nodesToReattach.append(node) node = node.nextNode else: prevNode = node node = node.nextNode for nodeToAttach in nodesToReattach: nodeToAttach.nextNode = None # remove old refernece or else we're circular prevNode.nextNode = nodeToAttach prevNode = nodeToAttach linkedList = LinkedList() linkedList.appendToTail(3) linkedList.appendToTail(5) linkedList.appendToTail(8) linkedList.appendToTail(5) linkedList.appendToTail(10) linkedList.appendToTail(2) linkedList.appendToTail(1) partition(linkedList, 5) linkedList.printList()
from linked_list import LinkedList ll_a = LinkedList() ll_b = LinkedList() a_value = [7, 1, 6] b_value = [5, 9, 2] for i in a_value: ll_a.appendToTail(i) for i in b_value: ll_b.appendToTail(i) ll_a.list_print() ll_b.list_print() def make_num(linked_list): if (not linked_list.head): return -1 curr = linked_list.head digit = 0 sum = 0 while (curr): sum += curr.data * (10**digit) curr = curr.next digit += 1 return sum a = make_num(ll_a)