要实现两个部分:
结点对象
链表对象
假设需求:
节点实现
- 要存储数据
- 要存储下一个节点位置
class Node():
def __init__(self, item):
self.item = item
self.next = None
单链表实现
class SingleLinkList():
def __init__(self):
self._head = None
# 这里的头节点,有点像第一个元素的占位符
def is_empty(self):
return self.head == None
def length(self):
cur = self._head
count = 0
while cur != None:
count += 1
cur = cur.next
return count
# 头部添加元素
def add(self, item):
node = Node(item)
node.next = self._head
self._head = node
# 尾部添加元素
def append(self, item):
node = Node(item)
# 使用分支结构 (有不同情况,先考虑分支结构)
if self.is_empty():
self._head = node
else:
cur = self._head
while cur.next != None
cur = cur.next
cur.next = node