Python数据结构与算法:第3-12课时:单向循环链表添加元素
头部插入元素:
单项循环链表还需要考虑,最末的节点要指向新的头节点。
同时要考虑特殊情况:为空节点时。
如果为一个节点时,cur就没有cur.next这个属性了,就会报错,所以要排除空链表的状态。
如果链表只有一个节点是可以实现的。
实现代码:
def add(self, item):
"""头部添加节点"""
node = SingleNode(item)
if self.is_empty():
self._head = node
node.next = self._head
else:
#添加的节点指向_head
node.next = self._head
# 移到链表尾部,将尾部节点的next指向node
cur = self._head
while cur.next != self._head:
cur = cur.next
cur.next = node
#_head指向添加node的
self._head = node
尾插法append:
第一种特殊情况:空链表
直接将头节点设定位 插入元素地址,
然后将node.next指向node本身的地址。
若链表只有一个节点
和节点位于中间的情况可以一并处理。
实现代码:
def append(self, item):
"""尾部添加节点"""
node = SingleNode(item)
if self.is_empty():
self._head = node
node.next = self._head
else:
# 移到链表尾部
cur = self._head
while cur.next != self._head:
cur = cur.next
# 将尾节点指向node
cur.next = node
# 将node指向头节点_head
node.next = self._head