将原来的存储元素改为存储位置,通过位置找到元素。
看这个看不明白是这几天我突然卡壳的一个原因,当然还有其他很多原因,这主要是一小个原因。其他便是诸如:考试、复习、学习痛苦、身体不舒服、精神涣散、放假、在我学习时,室友在边上看电影,为了追求效果而连接蓝牙音箱增大音量且屡教不改的行为、室友在我学习时吃饭吧唧嘴,且伴随big_big_noise的无法改正的行为等等。这些其实都是小事,我去图书馆就OK了。
一个不算原因的原因:简书的写作环境越来越糟。
我从心里已经放弃了这个平台。
这些都是我放弃了已经坚持60天的原因。但是我并没有因此而失去一颗学习的心,我还在学,只不过不想再继续之前敷衍、心不在焉、自大、自满等一系列负面的行为。
但是我心里还是有很多话想说,身边的每个人都有自己的事情做,就算没事情做的人也对你的心情、想法、故事不感兴趣。没人有空有心听我说话,自己也没有想过抽时间好好跟身边的人好好说说话。
不过值得庆幸的是,还有我的父母在身后支持我。当然他们甚至不知道我在学什么,但是他们就是支持我,不为什么。
但有时候父母并不能完全的理解我的处境,我的心情,我的想法。
emmm。。。很多时候我自己都不太明白自己在想什么。
出来以后,我变的越来越犹豫,不敢做事,不敢前进。只敢在角落里默默的学,也不知道学些什么,就是学,遇到问题就自己解决,也不会去向身边的人求助。遇到想要的也不敢去追求,害怕失败了便再也没有机会了。只想不断地提升自己,提升到不会失败的地步。这样我就不会因为失败,失去任何东西了。
hhhh,你也没什么东西,你能失去什么呢?
之前有一个很自卑的室友,我觉得他一定很孤独,我需要去帮助他。
哈哈哈,三年下来,结果最孤独的人是我,当然我也有很多朋友,室友很好。
但是就是有一种很无助的孤独感,谁能帮你呢?没有。谁理解你呢?没有。
似乎只有在学习时,我才能感觉到充实,觉得自己还在。或者在玩游戏的时候,完全的把自己沉浸进去,这样也能让我短暂的忘记。但是只是短暂的,并不想一直打游戏。
有多久没有真正的谈心,有多久没有放手做一件事,又有多久没有敞开心扉让别人理解。很久很久~。
我一直都不觉得自己比别人差,比别人怎样怎样,只是觉得自己不应该是这样。那我又应该是哪样呢?心里好像有什么东西一直阻挡我看清自己,但一直不知道是什么。
写了这么多,还是有很多话没说,也想不起要说些什么。就好像我就不应该和别人分享自己的想法,就活该烂在肚子里。
算了。这可能真的是在说胡话。
我打算自己开个博客网站,自己自嗨了。
简书太乱了,什么人都有。虽然这与社会很像,什么人都有,但是我还能选择我自己是什么人。推荐的文章越来越糟,看不下去。虽然自己写的东西也看不下去,所以打算发在自己的博客。
说了这么多的废话,代码在后面,我看的懂,但是不知道它的作用、优缺点。
最终还是决定把上面的东西,与陌生人分享。放弃日更并不是什么大不了的事,我只是需要一个说话的地方。而不是一个天天都得说话的地方。
每个人都会有很多想法吧,我………………………………
from doublylinkedbase import _DoublyLinkedBase
class PositionList(_DoublyLinkedBase):
"""位置队列"""
class Position:
"""单一元素的位置类"""
def __init__(self, container, node):
"""初始化位置,用户不可见"""
self._container = container
self._node = node
def element(self):
"""返回一个位置的节点的元素"""
return self._node._element
def __eq__(self, other):
"""用于判断两个位置是否相等:p==q"""
return type(other) is type(self) and other._node is self._node
def __ne__(self, other):
"""用于判断两个位置是否相等:p!=q"""
return not (self == other)
def _validate(self, p):
"""返回一个位置上的节点元素,如果位置不合法返回异常"""
if not isinstance(p, self.Position):
raise TypeError('p must be proper Position type')
if p._container is not self:
raise ValueError('p does not belong to this container')
if p._node._next is None:
raise ValueError('p is no longer valid')
return p._node
def _make_position(self, node):
"""放回一个新的节点的位置对象,如果给的节点是哨兵则返回None"""
if node is self._header or self._tailer:
return None
else:
return self.Position(self, node)
def first(self):
"""返回位置队列的第一个元素,如果队列为空返回None"""
return self._make_position(self._header._next)
def last(self):
"""返回位置队列的最后一个元素,如果队列为空返回None"""
return self._make_position(self._tailer._prev)
def before(self, p):
"""返回一个位置的前一个位置"""
node = self._validate(p)
return self._make_position(node._prev)
def after(self, p):
"""返回一个位置的后一个位置"""
node = self._validate(p)
return self._make_position(node._next)
def __iter__(self):
"""生成器对象,使位置队列可以迭代"""
cursor = self.first()
while cursor is not None:
yield cursor.element()
cursor = self.after(cursor)
def _insert_between(self, e, predecessor, successor):
"""继承父类的_insert_between方法,将返回节点重载为返回位置"""
node = super()._insert_between(e, predecessor, successor)
return self._make_position(node)
def add_first(self, e):
"""在队列头加入一个新的元素"""
return self._insert_between(e, self._header, self._header._next)
def add_last(self, e):
"""在队列尾加入一个新的元素"""
return self._insert_between(e, self._tailer._prev, self._tailer)
def add_before(self, p, e):
"""在p位置前插入一个新的元素e"""
original = self._validate(p)
return self._insert_between(e, original._prev, original)
def add_after(self, p, e):
"""在p位置后插入一个新的元素e"""
original = self._validate(p)
return self._insert_between(e, original, original._next)
def delete(self, p):
"""删除p位置上的节点"""
original = self._validate(p)
return self._delete_node(original)
def replace(self, p, e):
"""把p位置上的元素替换为e"""
original = self._validate(p)
old_element = original._element
original._element = e
return old_element
网友评论