将列表转化为链表(python实现)


首先创建链表结点类

1 class LinkNode: 2     def __init__(self,item=None,next=None): 3         self.item = item    #item:当前结点的数据
4         self.next = next    #next:下一个结点

 

接下来创建链表类

 

class LinkedList: def __init__(self,seq=[]):    #seq为输入的列表
        self.size = 0        #链表初始长度为0
        self.head = None #链表头部结点初始时不存在
        self.last = None    #链表尾部结点初始时不存在
        for item in seq: self.append(item) #self.append()为自己定义的方法,该方法将列表的每个元素转为链表结点的格式 

 

 

链表类创建后,首先设置一个能获取列表长度的方法:

 

class LinkedList: def __init__(self,seq=[]):    #seq为输入的列表
        self.size = 0        #链表初始长度为0
        self.head = None #链表头部结点初始时不存在
        self.last = None   #链表尾部结点初始时不存在
        for item in seq: self.append(item) #self.append()为自己定义的方法,该方法将列表的每个元素转为链表结点的格式 

    def __len__(self): return self.size

__len__为python内置函数,在外部调用时,使用len()方法即可获得链表长度

 

 让我们设置构造函数(__init__)中出现的append()方法 ,效率Θ (1):

 class LinkedList: 
  
def __init__(self,seq=[]): #seq为输入的列表 self.size = 0 #链表初始长度为0 self.head = None #链表头部结点初始时不存在
self.last = None #链表尾部结点初始时不存在 for item in seq: self.append(item) #self.append()为自己定义的方法,该方法将列表的每个元素转为链表结点的格式 def __len__(self): return self.size

def append(self,item): #item为列表seq的元素 newNode = LinkNode(item) #调用LinkNode结点类,生成一个新结点 if self.size == 0: #如果当前链表没有任何结点,那么新结点成为链表的头部 self.head = newNode
     else:
#当前链表存在结点 self.last.next = newNode #self.last(尾部结点)的下一个结点为新结点 self.last = newNode #新结点变为尾部结点 self.size += 1 #由于新结点填入链表,链表长度+1

自此链表创建完毕

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM