鱼C论坛

 找回密码
 立即注册
查看: 952|回复: 2

[作品展示] 链表 - LinkedList

[复制链接]
发表于 2020-4-6 13:34:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 永恒的蓝色梦想 于 2020-4-6 13:39 编辑
  1. class node:
  2.     def __init__(self,value,next=None):
  3.         self.value=value
  4.         self.next=next

  5. class LinkedList_iterator:
  6.     def __init__(self,start,/):
  7.         self.__val=start

  8.     def __iter__(self):
  9.         return self

  10.     def __next__(self):
  11.         if self.__val:
  12.             temp=self.__val
  13.             self.__val=temp.next
  14.             return temp.value

  15.         raise StopIteration

  16. class LinkedList:
  17.     def __init__(self,value=None,/):
  18.         if value is None:
  19.             self.__isempty=True
  20.             self.__start=self.__end=None
  21.             self.__len=0

  22.         else:
  23.             self.__start=None
  24.             self.__isempty=True

  25.             for i in value:
  26.                 self.append(i)

  27.             self.__2empty()

  28.     @property
  29.     def start(self):
  30.         if self.__isempty:
  31.             return None

  32.         else:
  33.             return self.__start.value

  34.     @property
  35.     def end(self):
  36.         if self.__isempty:
  37.             return None

  38.         else:
  39.             return self.__end.value

  40.     def __bool__(self):
  41.         return not self.__isempty
  42.    
  43.     def __repr__(self):
  44.         return 'LinkedList(['+', '.join((repr(i) for i in self.__iter__()))+'])'

  45.     def __str__(self):
  46.         return ' -> '.join((repr(i) for i in self.__iter__()))

  47.     def __iter__(self):
  48.         return LinkedList_iterator(self.__start)

  49.     def __2empty(self):
  50.         if self.__start is None:
  51.             self.__end=None
  52.             self.__isempty=True

  53.     def extendleft(self,value,/):
  54.         for i in value:
  55.             self.appendleft(i)

  56.     def extend(self,value,/):
  57.         for i in value:
  58.             self.append(i)

  59.     def append(self,value,/):
  60.         if self.__isempty:
  61.             self.__start=self.__end=node(value)
  62.             self.__isempty=False
  63.             self.__len=1

  64.         else:
  65.             self.__end.next=self.__end=node(value)
  66.             self.__len+=1

  67.     def appendleft(self,value,/):
  68.         if self.__isempty:
  69.             self.__isempty=False
  70.             self.__start=self.__end=node(value)
  71.             self.__isempty=False
  72.             self.__len=1
  73.    
  74.         else:
  75.             self.__start=node(value,self.__start)
  76.             self.__len+=1

  77.     def popleft(self,/):
  78.         if self.__isempty:
  79.             raise IndexError("pop from empty LinkedList")

  80.         temp=self.__start
  81.         self.__start=temp.next
  82.         self.__2empty()
  83.         return temp.value
复制代码
如果代码有问题,欢迎在评论区指正!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-6 13:36:34 | 显示全部楼层
popleft 貌似有问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-6 13:40:05 | 显示全部楼层
zltzlt 发表于 2020-4-6 13:36
popleft 貌似有问题

感谢指正

测试的时候在IDLE里改了,忘了在vscode里改了……
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-21 05:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表