예제 #1
0
def test_search():
    """Test Linked_List length method."""
    from linked_list import Linked_List
    test_list = Linked_List()
    test_list.insert(data[0])
    test_list.insert(data[1])
    assert test_list.search(data[0]) == data[0]
예제 #2
0
def test_display():
    """Test Linked_List display method."""
    from linked_list import Linked_List
    test_list = Linked_List()
    test_list.insert(data[0])
    test_list.insert(data[1])
    assert test_list.display() == "(123, 456)"
예제 #3
0
def test_insert():
    """Test Linked_List insert method."""
    from linked_list import Linked_List
    from linked_list import Node
    test_list = Linked_List()
    test_list.insert(data[0])
    assert isinstance(test_list.head, Node)
예제 #4
0
def test_display():
    a = Linked_List()
    a.display()
    a.insert('a')
    a.insert(1)
    a.display()
    assert a.display_prep() == "(1, 'a')"
 def reversed(self):
     _result = Linked_List()     # init empty list
     current = self._head        # init start
     while current is not None:
         _result.add_head(current._value)
         current = current._next # incr
     return _result
예제 #6
0
def test_print():
    lst = Linked_List()
    lst.insert('A')
    lst.insert((1, 2, 3))
    lst.insert(42)
    lst.insert('Bob Dole')

    assert str(lst) == "('Bob Dole', 42, (1, 2, 3), 'A')"
예제 #7
0
def test_str():
    a = Linked_List()
    print a
    a.insert('When A Café')
    a.insert('b')
    a.insert(2)
    print a
    assert a.display_prep() == "(2, 'b', 'When A Café')"
예제 #8
0
def test_insert():
    lst = Linked_List()
    lst.insert(7)

    assert lst.head.datum == 7

    lst.insert('Sir Sean Connery')

    assert lst.head.datum == 'Sir Sean Connery'
 def test_as_list(self):
     ll = Linked_List()
     assert ll.as_list() == []
     ll.append('A')
     assert ll.as_list() == ['A']
     ll.append('B')
     assert ll.as_list() == ['A', 'B']
     ll.append('C')
     assert ll.as_list() == ['A', 'B', 'C']
 def test_find(self):
     ll = Linked_List()
     ll.append('A')
     ll.append('B')
     ll.append('C')
     assert ll.find(lambda item: item == 'B') == 'B'
     assert ll.find(lambda item: item < 'B') == 'A'
     assert ll.find(lambda item: item > 'B') == 'C'
     assert ll.find(lambda item: item == 'D') is None
 def test_length(self):
     ll = Linked_List()
     assert ll.length() == 0
     ll.append('A')
     assert ll.length() == 1
     ll.append('B')
     assert ll.length() == 2
     ll.append('C')
     assert ll.length() == 3
예제 #12
0
def test_remove():
    """Test Linked_List remove method."""
    from linked_list import Linked_List
    test_list = Linked_List()
    test_list.insert(data[0])
    test_list.insert(data[1])
    test_list.insert(data[2])
    test_list.remove(data[1])
    assert test_list.size() == 2
예제 #13
0
def test_pop():
    lst = Linked_List()
    lst.insert(7)
    lst.insert('Sir Sean Connery')
    val1 = lst.pop()
    val2 = lst.pop()

    assert val1 == 'Sir Sean Connery'
    assert val2 == 7
    assert lst.head is None
예제 #14
0
def polynomial(a, x, n):
    if a >= n:
        P = Linked_List()
        for i in range(n, 0, -1):
            node = a * x ** i
            P.add(node)
            a -= 1
        return P
    else:
        return ValueError("a>=n")
 def test_prepend(self):
     ll = Linked_List()
     ll.prepend('C')
     assert ll.head.data == 'C'
     assert ll.tail.data == 'C'
     ll.prepend('B')
     assert ll.head.data == 'B'
     assert ll.tail.data == 'C'
     ll.prepend('A')
     assert ll.head.data == 'A'
     assert ll.tail.data == 'C'
예제 #16
0
 def deleteDuplicates(self, head):
     if not head:
         return None
     tracer = head
     outputList = Linked_List()
     while (tracer.next != None):
         if (tracer.val != tracer.next.val):
             outputList.AddTail(tracer.val)
         tracer = tracer.next
     outputList.AddTail(tracer.val)
     return outputList.head
예제 #17
0
def test_size():
    s = Linked_List()
    assert s.size() is 0
    for something in range(100):
        s.insert(something)
    assert s.size() is 100
    s.pop()
    assert s.size() is 99
    s.insert(0)
    assert s.size() is 100
    m = List_Node(0)
    s.remove(m)
    assert s.size() is 99
예제 #18
0
 def __init__(self):
     """
     Generates an empty hash-table.
     """
     self.table = [Linked_List() for _ in range(4)]
     self.hash_size = 2
     self.min_size = 1
     self.max_size = 4
     self.num_keys = 0
     self.rand = randrange(1, max_int)
     self.word_size = int(log(max_int, 2))
     self.h = lambda key: (self.rand * key % max_int) >> (self.word_size -
                                                          self.hash_size)
예제 #19
0
    def rehash(self):
        """
        Rehashes all keys in the hash-table.
        """
        self.num_keys = 0
        table = self.table
        self.table = [Linked_List() for slot in range(self.max_size)]

        for slot in table:
            element = slot.head
            while element:
                self.insert(element.key, element.value)
                element = element.next
예제 #20
0
def test_search():
    lst = Linked_List()
    lst.insert(7)
    lst.insert(4)
    lst.insert('Sir Sean Connery')
    lst.insert((1, 2, 3))
    lst.insert('Harrison Ford')
    n1 = lst.search('Sir Sean Connery')
    n2 = lst.search(7)

    assert n1.datum == 'Sir Sean Connery'
    assert n2.pointer is None
    assert lst.search('Batman') is None
예제 #21
0
def test_remove():
    lst = Linked_List()
    lst.insert(7)
    lst.insert(4)
    lst.insert('Sir Sean Connery')
    lst.insert((1, 2, 3))
    lst.remove(4)
    lst.remove('Sir Sean Connery')

    assert lst.size() == 2
    assert str(lst) == "((1, 2, 3), 7)"
    lst.remove((1, 2, 3))

    assert str(lst) == "(7,)"
예제 #22
0
def create_linked_list(fencers_csv):
    ''' Creates a sorted linked list from a CSV file. '''
    with open(fencers_csv) as csv_file:
        fencer_list = Linked_List()
        reader = csv.reader(csv_file, delimiter='\t')
        for row in reader:
            fencer = {
                'last_name': row[0].split(',')[0],
                'first_name': row[0].split(',')[1],
                'team': row[0].split(',')[2],
                'rank': row[0].split(',')[3]
            }
            fencer_list.insert(fencer)
        return fencer_list
 def test_delete(self):
     ll = Linked_List()
     ll.append('A')
     ll.append('B')
     ll.append('C')
     print(ll.as_list())
     ll.delete('A')
     print(ll.as_list())
     assert ll.head.data == 'B'
     assert ll.tail.data == 'C'
     ll.delete('C')
     assert ll.head.data == 'B'
     assert ll.tail.data == 'B'
     ll.delete('B')
     assert ll.head is None
     assert ll.tail is None
     with self.assertRaises(ValueError):
         ll.delete('D')
예제 #24
0
def test_remove():
    a = Linked_List()
    a.insert('val')
    assert a.head
    b = List_Node('val')
    a.remove(b)
    assert not a.head
    for something in range(100):
        a.insert(something)
    c = List_Node(99)
    a.remove(c)
    assert a.head.data is 98
    d = List_Node(0)
    a.remove(d)
    temp = a.head
    while temp.next:
        temp = temp.next
    assert temp.data is 1
def check_linked_list_cycle(first_node):
    # """Returns True if the linked list is a circular linked list, else
    # it returns False.
    # >>> check_linked_list_cycle(first_node)
    # False
    # """
    ll = Linked_List()
    first_node = ll.first_node()
    slow_runner = first_node
    fast_runner = first_node

    while fast_runner != None and fast_runner.next != None:
        slow_runner = slow_runner.next
        fast_runner = fast_runner.next.next

        if fast_runner == slow_runner:
            return True
    return False
예제 #26
0
def test_size():
    lst = Linked_List()
    lst.insert(0)
    lst.insert(1)
    lst.insert(45)
    lst.insert('turds')

    assert lst.size() == 4
    assert lst.head.datum == 'turds'
    lst.pop()
    lst.pop()
    assert lst.size() == 2
    assert lst.head.datum == 1
    lst.insert('boobies')
    assert lst.size() == 3
    lst.insert('i am mature')
    assert lst.size() == 4
    lst.pop()
    assert lst.head.datum == 'boobies'
from RemoveDuplicatesfromSortedList import Solution
from linked_list import ListNode, Linked_List

a = Linked_List()
a.AddTail(1)
a.AddTail(1)
a.AddTail(1)
a.AddTail(1)
a.AddTail(1)
a.AddTail(1)
a.AddTail(1)
a.AddTail(1)
a.AddTail(2)
a.AddTail(3)
a.AddTail(3)

temp = Solution()
tracer = temp.deleteDuplicates(a.head)
while tracer.next != None:
    print(tracer.val)
    tracer = tracer.next
print(tracer.val)
예제 #28
0
def test_linked_list():
    """
    Code to test each part of the linked list class
    """
    # empty()
    ll = Linked_List()
    assert ll.empty() == True
    ll.head = Node(3)
    assert ll.empty() == False

    # next_is_empty()
    assert ll.head.next_is_empty() == True
    ll.head.tail = Node(4)
    assert ll.head.next_is_empty() == False

    # size()
    ll.head.tail.tail = Node(5)
    assert ll.size() == 3
    assert Linked_List().size() == 0
    size_one = Linked_List()
    size_one.head = Node(18)
    assert size_one.size() == 1

    # value_at()
    assert ll.value_at(0) == 3
    assert ll.value_at(1) == 4
    assert ll.value_at(2) == 5
    assert ll.value_at(3) == "IndexError: Index is too large or incorrect. Should be an integer less than size of linkedlist"

    # push_front()
    ll.push_front(2)
    assert ll.value_at(0) == 2
    assert ll.value_at(1) == 3
    assert ll.value_at(2) == 4
    assert ll.value_at(3) == 5
    assert ll.size() == 4

    # pop_front()
    front_value = ll.pop_front()
    assert front_value == 2
    assert ll.size() == 3
    assert ll.value_at(0) == 3

    # push_back()
    ll.push_back(6)
    assert ll.size() == 4
    assert ll.value_at(3) == 6

    # pop_back()
    back_value = ll.pop_back()
    assert ll.size() == 3
    assert back_value == 6

    # front()
    front_value = ll.front()
    assert front_value == 3
    assert ll.size() == 3

    # back()
    back_value = ll.back()
    assert back_value == 5
    assert ll.size() == 3

    # insert_at()
    ll.insert_at(0, 2)
    assert ll.size() == 4
    assert ll.value_at(0) == 2
    ll.insert_at(1, 2.5)
    assert ll.size() == 5
    assert ll.value_at(1) == 2.5
    assert ll.value_at(2) == 3

    # erase()
    ll.remove(0)
    assert ll.size() == 4
    assert ll.value_at(0) == 2.5
    ll.remove(1)
    assert ll.size() == 3
    assert ll.value_at(1) == 4

    # value_n_from_end()
    n = ll.value_n_from_end(0)
    assert n == 5
    assert ll.size() == 3

    # reverse()
    reversed = ll.reverse()
    assert reversed.size() == 3
    assert reversed.value_at(0) == 5
    assert reversed.value_at(1) == 4
    assert reversed.value_at(2) == 2.5

    # remove_value(value)
    reversed.remove_value(4)
    assert reversed.size() == 2
    assert reversed.value_at(0) == 5
    assert reversed.value_at(1) == 2.5
예제 #29
0
 def __init__(self, iterable=None):
     """Initialize stack as a Linked_List-esque object."""
     self._container = Linked_List(iterable)
예제 #30
0
def test_init():
    lst = Linked_List()

    assert lst.head is None