利用链表的思想来实现list
程序员文章站
2022-04-06 15:33:54
...
class error(Exception):
def __init__(self,message):
super(error,self).__init__()
self.message=message
def __str__(self):
return "out of range"
class Node():#节点
def __init__(self,ele=None):#头节点为空
self.ele=ele #节点的值
self.next=None #节点的下一个
class mylist():
def __init__(self,node=None): #列表本身
self._head=node
self.pos=0
def empty(self):
return self._head==None
def add(self,item):
node=Node(item)
node.next=self._head
self._head=node
def length(self):
cursor=self._head
num=0
while cursor!=None:
cursor=cursor.next
num+=1
return num
def append(self,item):
node=Node(item)
if self.empty():
self._head=node
else:
cursor=self._head
while cursor.next!=None:
cursor=cursor.next
cursor.next=node
def get(self,index):
if index<0 or index>self.length()-1:
raise error("out of range")
else:
num=0
cursor=self._head
while num<index:
cursor=cursor.next
num+=1
return cursor.ele
def insert(self,index,item):
if index<0 or index>self.length():
raise error("out of range")
else:
if index==0:
self.add(item)
elif index==self.length():
self.append(item)
else:
node=Node(item)
cursor=self._head
prev=0
while prev<index-1:
cursor=cursor.next
prev+=1
node.next=cursor.next
cursor.next=node
def pop(self):
if self.empty():
return None
else:
if self.length()==1:
ele=self._head.ele
self._head=None
return ele
cursor=self._head
while cursor.next!=None:#[a,b],cursor=a
current=cursor
cursor=cursor.next
ele=cursor.ele
current.next=None
return ele
def remove(self,item):
cursor=self._head
pre=None
while cursor!=None:#[a,b],cursor=b
if cursor.ele==item:
if not pre: #只有一个元素
self._head=cursor.next
else: #有多个元素
pre.next=cursor.next
break
else: #[]a,b,c]
pre=cursor
cursor=cursor.next
def delete(self,index):
if index<0 or index>self.length()-1:
raise error("out of range")
else:
if index==0:
cursor=self._head
self._head=cursor.next
else:
cursor=self._head
num=0
while num<index:
pre=cursor
cursor=cursor.next
num+=1
pre.next=cursor.next
def __iter__(self):
return self
def __next__(self):
if self.pos < self.length():
self.pos += 1
cursor = self._head
current=cursor
num = 0
while cursor != None:#循环[a,b,c]
current = cursor
cursor = cursor.next
num += 1
if num == self.pos:
return current.ele
else:
raise StopIteration
arr=mylist()
arr.append("a")
arr.append("b")
arr.append("c")
arr.append("d")
arr.insert(4,"e")
for i in arr:
print(i)
上一篇: Java 中初始化 List 集合的 7 种方式!
下一篇: php $$是什么意思_PHP教程