#实现的关键是 节点(元素、引索)的构建
# 内部逻辑和属性的严谨关联
# 引用类型可修改原类型
class Note:
def __init__(self,elem,next_=None): # 节点单元
self.next = next_ # 引索
self.elem = elem # 元素
class Linklist:
def __init__(self): # 创建空链表
self.head = None
self.length = 0
def delete(self): # 删除链表
self.head = None
def traversal(self):
p = self.head
elems=[]
while p != None:
elems.append(p.elem)
p=p.next
print(elems)
def prepend(self,elem): # 首部添加元素
note = Note(elem)
note.next=self.head
self.head= note
self.length += 1
def insert(self,elem,i): # 插入元素
note = Note(elem)
if 0<i<=self.length:
p=self.head
p0=p
while i>0:
i -= 1
p0=p
p=p.next
p0.next=note
note.next=p
self.length += 1
elif i==0:
self.prepend(elem)
else:
print("超出索引")
def append(self,elem): # 末端加入元素
self.insert(elem,self.lenght)
self.length += 1
def delete(self,i): # 删除第i个元素
if 0<i<self.length:
p=self.head
p0=p
while i>0:
i -= 1
p0=p # i 前端元素
p=p.next # i 本身
p0.next=p.next
self.length -= 1
elif i == 0 and self.length>0:
self.head=self.head.next
self.length -= 1
else:
print("索引出错")