在python中查找链表的长度

时间:2015-07-10 05:57:14

标签: python-3.x linked-list

def len_link(lst):

"""Returns the length of the link.

    >>> lst = link(1, link(2, link(3, link(4))))
    >>> len_link(lst)
    4
    >>> len_link(empty)
    0
    """

您好我很难理解如何找到链接列表的长度,如果有人可以帮助我会非常感激。

3 个答案:

答案 0 :(得分:2)

您也可以使用:

def len_link(list):
    temp=list.head
    count=0
    while(temp):
        count+=1
        temp=temp.next
    return count

答案 1 :(得分:0)

"Functional linked lists in Python"中所述:

  

length操作返回给定列表中的元素数。   要查找列表的长度,我们需要扫描其所有n个元素。   因此,该操作的时间复杂度为O(n)。

def length(xs):
    if is_empty(xs):
        return 0
    else:
        return 1 + length(tail(xs))

assert length(lst(1, 2, 3, 4)) == 4
assert length(Nil) == 0
     

头部和尾部分别是:

def head(xs):
    return xs[0]

assert head(lst(1, 2, 3)) == 1
def tail(xs):
    return xs[1]

assert tail(lst(1, 2, 3, 4)) == lst(2, 3, 4)

答案 2 :(得分:0)

尝试一下:

def lengthRecursive(head):
    if head is None:
        return 0
    else:
       return 1 + lengthRecursive(head.next)