Exemple #1
0
"""
Cracking the coding interview: 2.3
"""
import sys

sys.path.insert(0, '../data_structures')
from linked_list_node import ListNode
from singly_linked_list import LinkedList


def delete_middle_node(node):
    next_node = node.next.next
    node = node.next
    node.next = next_node


ll = LinkedList()
node_to_delete = ListNode(4)
ll.append_to_list(ListNode(1))
ll.append_to_list(ListNode(2))
ll.append_to_list(ListNode(3))
ll.append_to_list(node_to_delete)
ll.append_to_list(ListNode(5))
delete_middle_node(node_to_delete)
assert not ll.search(node_to_delete)
Exemple #2
0
import sys
sys.path.insert(0, '../data_structures')

from linked_list_node import ListNode
from singly_linked_list import LinkedList

def remove_dupes(ll):
    s = set()
    n = ll.head

    while n:
        s.add(n.data)
        if n.next:
            if n.next.data in s:
                n.next = n.next.next
        n = n.next   
    
    return ll

ll = LinkedList()
ll.append_to_list(ListNode(1))
ll.append_to_list(ListNode(2))
ll.append_to_list(ListNode(3))
ll.append_to_list(ListNode(4))
ll.append_to_list(ListNode(4))
ll.append_to_list(ListNode(5))
remove_dupes(ll)
ll._print_list()

Exemple #3
0
        nxt = n.next
        if n.data < p:
            n.next = head
            head = n
        else:
            tail.next = n
            tail = n
        n = nxt

    tail.next = None

    return head


ll = LinkedList()
ll.append_to_list(ListNode(1))
ll.append_to_list(ListNode(4))
ll.append_to_list(ListNode(3))
ll.append_to_list(ListNode(10))
ll.append_to_list(ListNode(8))
ll.append_to_list(ListNode(63))
ll.append_to_list(ListNode(28))
ll.append_to_list(ListNode(13))
new_head = partition_linked_list(ll.head, 28)

result = []
n = new_head
while n:
    result.append(n.data)
    n = n.next
print(result)