链表 - LinkedList
本帖最后由 永恒的蓝色梦想 于 2020-4-6 13:39 编辑class node:
def __init__(self,value,next=None):
self.value=value
self.next=next
class LinkedList_iterator:
def __init__(self,start,/):
self.__val=start
def __iter__(self):
return self
def __next__(self):
if self.__val:
temp=self.__val
self.__val=temp.next
return temp.value
raise StopIteration
class LinkedList:
def __init__(self,value=None,/):
if value is None:
self.__isempty=True
self.__start=self.__end=None
self.__len=0
else:
self.__start=None
self.__isempty=True
for i in value:
self.append(i)
self.__2empty()
@property
def start(self):
if self.__isempty:
return None
else:
return self.__start.value
@property
def end(self):
if self.__isempty:
return None
else:
return self.__end.value
def __bool__(self):
return not self.__isempty
def __repr__(self):
return 'LinkedList(['+', '.join((repr(i) for i in self.__iter__()))+'])'
def __str__(self):
return ' -> '.join((repr(i) for i in self.__iter__()))
def __iter__(self):
return LinkedList_iterator(self.__start)
def __2empty(self):
if self.__start is None:
self.__end=None
self.__isempty=True
def extendleft(self,value,/):
for i in value:
self.appendleft(i)
def extend(self,value,/):
for i in value:
self.append(i)
def append(self,value,/):
if self.__isempty:
self.__start=self.__end=node(value)
self.__isempty=False
self.__len=1
else:
self.__end.next=self.__end=node(value)
self.__len+=1
def appendleft(self,value,/):
if self.__isempty:
self.__isempty=False
self.__start=self.__end=node(value)
self.__isempty=False
self.__len=1
else:
self.__start=node(value,self.__start)
self.__len+=1
def popleft(self,/):
if self.__isempty:
raise IndexError("pop from empty LinkedList")
temp=self.__start
self.__start=temp.next
self.__2empty()
return temp.value如果代码有问题,欢迎在评论区指正!{:10_323:} popleft 貌似有问题 zltzlt 发表于 2020-4-6 13:36
popleft 貌似有问题
感谢指正
测试的时候在IDLE里改了,忘了在vscode里改了……{:10_262:}
页:
[1]