首先创建链表结点类
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
自此链表创建完毕