## python实现单向链表详解

| |
[ 所属分类 开发（python） | 发布者 店小二03 | 时间 | 作者 红领巾 ] 0人收藏点击收藏

1. 初始化链表
"""节点类"""
class Node(object):
def __init__(self, data):
self.data = data
self.nex = None
def __init__(self):
"""初始化链表"""
2. 获取链表长度
def __len__(self):
length = 0
while pre:
length += 1
pre = pre.nex
return length
3. 追加节点

"""追加节点"""
def append(self, data):
"""
2.tail.nex-->node
:param data:
:return:
"""
node = Node(data)
if self.head is None:
else:
while pre.nex:
pre = pre.nex
pre.nex = node
4. 获取节点

def get(self, index):
"""
:param index:
:return:
"""
index = index if index >= 0 else len(self) + index
if len(self) < index or index < 0:
return None
while index:
pre = pre.nex
index -= 1
return pre
5. 设置节点

"""设置节点"""
def set(self, index, data):
node = self.get(index)
if node:
node.data = data
return node
6. 插入节点

"""插入节点"""
def insert(self, index, data):
"""
1.index 插入节点位置包括正负数
2.找到index-1-->pre_node的节点
3.pre_node.next-->node
node.next-->pre_node.next.next
:param index:
:param data:
:return:
"""
node = Node(data)
if abs(index + 1) > len(self):
return False
index = index if index >= 0 else len(self) + index + 1
if index == 0:
else:
pre = self.get(index - 1)
if pre:
nex = pre.nex
pre.nex = node
node.nex = nex
else:
return False
return node
7. 删除节点

"""删除某个元素"""
def delete(self, index):
f = index if index > 0 else abs(index + 1)
if len(self) <= f:
return False
index = index if index >= 0 else len(self) + index
prep = None
while index:
prep = pre
pre = pre.nex
index -= 1
if not prep:
else:
prep.nex = pre.nex
return pre.data
8. 反转链表

"""反转链表"""
def __reversed__(self):
"""
1.pre-->next 转变为 next-->pre
2.pre 若是head 则把 pre.nex --> None
:return:
"""
def reverse(pre_node, node):
if pre_node is self.head:
pre_node.nex = None
if node:
next_node = node.nex
node.nex = pre_node
return reverse(node, next_node)
else:
9. 清空链表

"""清空链表"""
def clear(self):