实现书中给出的几个功能,方便对照书籍发现自己的错误
书上实现了大概以下几个功能:
prepend功能:建立新结点,并插入到首端。
append功能 :建立新结点,并插入到尾端。
pop功能 :前端弹出。
printall功能:输出表元素。
首先建立ADT模型
,把要实现的功能和大概用到的数据写出来,整理下思路,下面是建立ADT模型
之前的考虑:
需不需要从我们实现过的链表类中派生LCList类
?
可以发现,重复用到的只有尾指针self._rear
,和计数器self._len
,其他的方
法都需要覆盖重写,那么就不需要从其他链表类中派生。
下面是用XMind
做的,类似于ADT模型
:
下面我们按着书中实现的顺序对比我自己写的功能进行分析(略过一目了然的功能)。
我是实现的prepend功能
:
def prepend(self, elem):
if self._rear is None: #表是空滴