def test_size(self):
     """Test size method."""
     ul = UnorderedList()
     ul.add(3)
     ul.add(2)
     ul.add(1)
     self.assertEqual(ul.size(), 3)
示例#2
0
def sumlist(ll1, ll2):
    ll = UnorderedList()
    carry = 0

    n1 = ll1.head
    n2 = ll2.head

    while n1 or n2:
        result = carry
        if n1:
            result += n1.value
            n1 = n1.next

        if n2:
            result += n2.value
            n2 = n2.next

        singles = result % 10
        ll.add(singles)
        carry = result // 10

    if carry is not 0:
        ll.add(carry)

    return ll
 def test_add(self):
     """Test add method."""
     ul = UnorderedList()
     ul.add(1)
     self.assertFalse(ul.is_empty())
     self.assertTrue(isinstance(ul.head, Node))
     self.assertEqual(ul.head.get_data(), 1)
    def test_search(self):
        """Test search method."""
        ul = UnorderedList()
        ul.add(3)
        ul.add(2)
        ul.add(1)

        self.assertTrue(ul.search(3))
        self.assertTrue(ul.search(2))
        self.assertTrue(ul.search(1))
        self.assertFalse(ul.search(0))
    def test_remove(self):
        """Test remove method."""
        ul = UnorderedList()
        ul.add(3)
        ul.add(2)
        ul.add(1)

        self.assertTrue(ul.search(2))

        ul.remove(2)

        self.assertFalse(ul.search(2))
示例#6
0
class TestLinkedList(unittest.TestCase):

    def setUp(self):
        self.ll = UnorderedList()

    def test_empty(self):
        self.assertFalse(self.ll)
        self.assertEqual(0, len(self.ll))

    def test_add_item(self):
        self.ll.add(1)
        self.assertEqual(1, self.ll.head.data)

    def test_items_in_reverse_order_added(self):
        self.add_many()
        self.assertEqual(3, self.ll.head.data)
        self.assertEqual(1, self.ll.tail.data)

    def test_append(self):
        self.add_many()
        self.ll.append(4)
        self.assertEqual(4, self.ll.tail.data)

    def test_append_when_empty(self):
        self.ll.append(7)
        self.assertEqual(7, self.ll.head.data)

    def test_find(self):
        self.add_many()
        self.assertTrue(self.ll.find(3))
        self.assertFalse(self.ll.find(5))

    def test_insert(self):
        self.add_many()
        self.ll.insert(4, 1)
        self.assertEqual(4, self.ll.head.next.data)

    def test_insert_out_of_bounds(self):
        self.add_many()
        self.ll.insert(4, 100)
        self.assertEqual(3, len(self.ll))

    def add_many(self):
        self.ll.add(1)
        self.ll.add(2)
        self.ll.add(3)
示例#7
0
            prev_to_smallest_so_far = prev

        prev = cur
        cur = cur.next
    # if the smallest element is at the head of the linked list:
    if prev_to_smallest_so_far is None:
        ll.head = smallest_so_far.getNext()
        smallest_so_far = None
    else:
        prev_to_smallest_so_far.setNext(smallest_so_far.getNext())
    #print("Previous {}  Smallest {}".format(prev_to_smallest_so_far.data, smallest_so_far.data))


if __name__ == '__main__':
    lo = UnorderedList()
    lo.add(1)
    lo.add(3)
    lo.add(2)
    lo.add(15)
    lo.add(5)
    lo.add(10)
    lo.add(7)
    lo.add(8)
    lo.add(15)
    print("***********************")
    print(lo.lprint())
    print(lo.toArray())
    print("***********************")
    print("***********************")
    remove_minimum(lo)
    print(lo.toArray())
示例#8
0
	current == ll.head
	while current:
		runner = current
		while runner.next:
			# if next is the same as current, then skip it
			if runner.next.value == current.value:
				runner.next = runner.next.next
			else:
				runner = runner.next
		current = current.next

	return ll

if __name__ == '__main__':
	ll = UnorderedList()
	ll.add(1)
	ll.add(2)
	ll.add(2)
	ll.add(3)
	ll.add(3)
	ll.add(3)
	ll.add(4)
	ll.add(4)
	ll.add(4)
	ll.add(4)
	ll.printList()
	ll = removeDups(ll)
	print "after removeDups"
	ll.printList()

示例#9
0
from linkedlist import Node
from linkedlist import UnorderedList

list1 = UnorderedList()
list1.add(12)
list1.add(40)
list1.add(45)
list1.append(67)
print(list1.index(34))
list1.printList()
示例#10
0
            n2 = n2.next

        singles = result % 10
        ll.add(singles)
        carry = result // 10

    if carry is not 0:
        ll.add(carry)

    return ll


if __name__ == '__main__':
    ll1 = UnorderedList()
    ll2 = UnorderedList()

    ll1.add(7)
    ll1.add(1)
    ll1.add(6)
    ll1.printList()
    print "+"
    ll2.add(5)
    ll2.add(9)
    ll2.add(2)
    ll2.printList()

    ll = UnorderedList()
    ll = sumlist(ll1, ll2)
    print "="
    ll.printList()
示例#11
0
from linkedlist import UnorderedList

mylist = UnorderedList()

mylist.add(40)
mylist.add(13)
mylist.add(32)
mylist.add(97)

print(mylist.search(13))
示例#12
0
def deleteMiddle(node):
    """
	modified my linked list implementation 
	to return the node, when adding to list 
	set next, to next next 
	"""
    node.value = node.next.value
    node.next = node.next.next


if __name__ == '__main__':
    """
	delete 100 from list
	"""
    ll = UnorderedList()
    ll.add(1)
    ll.add(2)
    ll.add(3)
    ll.add(4)
    ll.add(5)
    middle = ll.add(100)
    ll.add(6)
    ll.add(7)
    ll.add(8)
    ll.add(9)
    ll.add(0)
    ll.printList()
    print "deleteMiddle"

    deleteMiddle(middle)
    ll.printList()
示例#13
0
from linkedlist import UnorderedList


def kth_to_last(ll, k):
    current = ll.head
    for i in range(k):
        current = current.next

    return current.value


if __name__ == '__main__':
    ll = UnorderedList()
    ll.add(1)
    ll.add(2)
    ll.add(3)
    ll.add(4)
    ll.add(5)
    ll.add(6)
    ll.add(7)
    ll.add(8)
    ll.add(9)
    ll.add(0)
    ll.printList()
    print "kth to last"
    print kth_to_last(ll, 3)