在Python中创建n长度链表的更快捷方式

时间:2012-01-23 23:53:19

标签: python algorithm linked-list

我正在尝试使用Python创建长度为n的链表。我实现了简单列表,工作级联函数和工作create_list函数;但是,我只是想知道制作链表是否比使用我的连接函数(用于测试)更有效。

简单列表类:

class Cell:

    def __init__( self, data, next = None ):
        self.data = data
        self.next = next

连接函数:

def list_concat(A, B):
    current = A
    while current.next != None:
        current = current.next
    current.next = B
    return A

列出创建(需要永远!):

def create_list(n):
    a = cell.Cell(0)
    for i in (range(1,n)):
        b = cell.Cell(i)
        new_list = cell.list_concat(a, b)   
    return new_list

1 个答案:

答案 0 :(得分:1)

改进代码的最简单方法是:

def create_list(n):
    new_list = cell.Cell(0)
    last_a = new_list
    for i in (range(1,n)):
        a = cell.Cell(i)
        cell.list_concat(last_a, a)
        last_a = a
    return new_list

这将使方法的复杂性从O(n ** 2)降低到O(n)。