示例#1
0
def PartitionListTest():
    import numpy.random as nprnd
    for i_test in range(100):
        len_a = nprnd.randint(8)
        if len_a == 0:
            continue
        temp_a = list(nprnd.randint(8, size = len_a))
        ll_a = LinkedQueue()
        for item in temp_a:
            ll_a.enqueue(item)
示例#2
0
def PartitionListTest():
    import numpy.random as nprnd
    for i_test in range(100):
        len_a = nprnd.randint(8)
        if len_a == 0:
            continue
        temp_a = list(nprnd.randint(8, size=len_a))
        ll_a = LinkedQueue()
        for item in temp_a:
            ll_a.enqueue(item)
示例#3
0
def RevInt(i_num):
    i_total = 0
    q_digits = LinkedQueue()
    while i_num:
        q_digits.enqueue(i_num % 10)
        i_num = i_num / 10
        i_total += 1
    i_revnum = 0
    while not q_digits.is_empty():
        i_revnum = i_revnum * 10 + q_digits.dequeue()
    return i_revnum
示例#4
0
def DirectPartition(ll_a, i_key):
    ll_lpart = LinkedQueue()
    ll_gepart = LinkedQueue()
    pt_a = ll_a._head
    while pt_a is not None:
        i_a = pt_a._element
        if i_a < i_key:
            ll_lpart.enqueue(i_a)
        else:
            ll_gepart.enqueue(i_a)
        pt_a = pt_a._next
    if ll_lpart.is_empty():
        return ll_gepart
    else:
        ll_lpart._tail._next = ll_gepart._head
        ll_lpart._tail = ll_gepart._tail
        ll_lpart._size += ll_gepart._size
        return ll_lpart
示例#5
0
def AddTwoLists(ls_a, ls_b):
    ls_sum = LinkedQueue()
    pt_a = ls_a._head
    pt_b = ls_b._head
    i_tens = 0
    while pt_a is not None or pt_b is not None:
        if pt_a is not None and pt_b is not None:
            i_sum = pt_a._element + pt_b._element + i_tens
        if pt_a is None and pt_b is not None:
            i_sum = pt_b._element + i_tens
        if pt_a is not None and pt_b is None:
            i_sum = pt_a._element + i_tens
        i_ones = i_sum % 10
        i_tens = (i_sum - i_ones) / 10
        ls_sum.enqueue(i_ones)
        if pt_a is not None:
            pt_a = pt_a._next
        if pt_b is not None:
            pt_b = pt_b._next
    if i_tens != 0:
        ls_sum.enqueue(i_tens)
    return ls_sum
示例#6
0
def AddTwoListsTest():
    import numpy.random as nprnd
    for i in range(10000):
        len_a = nprnd.randint(10)
        len_b = nprnd.randint(10)
        temp_a = nprnd.randint(10, size=len_a)
        temp_b = nprnd.randint(10, size=len_b)
        ls_a = LinkedQueue()
        ls_b = LinkedQueue()
        for item in temp_a:
            ls_a.enqueue(item)
        for item in temp_b:
            ls_b.enqueue(item)
        ls_sum = AddTwoLists(ls_a, ls_b)
        print ls_a, ':', ls_b, ':', ls_sum
        assert (ListToNum(ls_sum) == DirectAdd(ls_a, ls_b))
示例#7
0
def DirectPartition(ll_a, i_key):
    ll_lpart = LinkedQueue()
    ll_gepart = LinkedQueue()
    pt_a = ll_a._head
    while pt_a is not None:
        i_a = pt_a._element
        if i_a < i_key:
            ll_lpart.enqueue(i_a)
        else:
            ll_gepart.enqueue(i_a)
        pt_a = pt_a._next
    if ll_lpart.is_empty():
        return ll_gepart
    else:
        ll_lpart._tail._next = ll_gepart._head
        ll_lpart._tail = ll_gepart._tail
        ll_lpart._size += ll_gepart._size
        return ll_lpart
示例#8
0
def AddTwoListsTest():
    import numpy.random as nprnd
    for i in range(10000):
        len_a = nprnd.randint(10)
        len_b = nprnd.randint(10)
        temp_a = nprnd.randint(10, size = len_a)
        temp_b = nprnd.randint(10, size = len_b)
        ls_a = LinkedQueue()
        ls_b = LinkedQueue()
        for item in temp_a:
            ls_a.enqueue(item)
        for item in temp_b:
            ls_b.enqueue(item)
        ls_sum = AddTwoLists(ls_a, ls_b)
        print ls_a, ':', ls_b, ':', ls_sum
        assert(ListToNum(ls_sum) == DirectAdd(ls_a, ls_b))
示例#9
0
def AddTwoLists(ls_a, ls_b):
    ls_sum = LinkedQueue()
    pt_a = ls_a._head
    pt_b = ls_b._head
    i_tens = 0
    while pt_a is not None or pt_b is not None:
        if pt_a is not None and pt_b is not None:
            i_sum = pt_a._element + pt_b._element + i_tens
        if pt_a is None and pt_b is not None:
            i_sum = pt_b._element + i_tens
        if pt_a is not None and pt_b is None:
            i_sum = pt_a._element + i_tens
        i_ones = i_sum % 10
        i_tens = (i_sum - i_ones) / 10
        ls_sum.enqueue(i_ones)
        if pt_a is not None:
            pt_a = pt_a._next
        if pt_b is not None:
            pt_b = pt_b._next
    if i_tens != 0:
        ls_sum.enqueue(i_tens)
    return ls_sum