將列表轉化為鏈表(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