|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 永恒的蓝色梦想 于 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
复制代码 如果代码有问题,欢迎在评论区指正! |
|