Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中创建n长度链表的更快方法_Python_Algorithm_Linked List - Fatal编程技术网

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

在Python中创建n长度链表的更快方法,python,algorithm,linked-list,Python,Algorithm,Linked List,我正在尝试使用Python创建长度为n的链表。我实现了简单列表、一个工作连接函数和一个工作创建列表函数;然而,我只想知道是否有比使用我的连接函数(为测试而设计)更有效的方法来创建链表 简单列表类: class Cell: def __init__( self, data, next = None ): self.data = data self.next = next 连接函数: def list_concat(A, B): current =

我正在尝试使用Python创建长度为n的链表。我实现了简单列表、一个工作连接函数和一个工作创建列表函数;然而,我只想知道是否有比使用我的连接函数(为测试而设计)更有效的方法来创建链表

简单列表类:

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):
    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)。

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

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)。

使用此实现,concatenate函数返回一个只有两个元素的列表。这似乎一直在覆盖现有列表。concatenate函数使用此实现返回只有两个元素的列表。这似乎一直在覆盖现有列表。这是家庭作业吗?因为如果不是,那么在python中实现链表、使用链表或从链表继承链表就没有多大意义。是的,这是为了在算法类中进行测试。我不需要让我的列表创建高效,但我想知道是否有比我实现的更高效的方法。这可能是回答这类问题的好地方。这是家庭作业吗?因为如果不是,那么在python中实现链表、使用链表或从链表继承链表就没有多大意义。是的,这是为了在算法类中进行测试。我不需要让我的列表创建高效,但我想知道是否有比我实现的更高效的方法。可能是回答这类问题的好地方。