首先創建鏈表結點類
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
自此鏈表創建完畢