1嘱蛋、對一個單鏈表進(jìn)行逆序操作蚯姆。
逆序之前為 head-->A-->B-->C-->None
逆序之后為 head-->C-->B-->A-->None
2、實現(xiàn)
定義節(jié)點類
class LNode(object):
def __init__(self, elem, _next):
self.elem = elem
self.next = _next
單鏈表類
class LinkList(object):
def __init__(self):
self.head = None
# 頭插法創(chuàng)建單鏈表
def prepend(self, elem):
self.head = LNode(elem, self.head)
# 尾插法創(chuàng)建單聊表
def append(self, elem):
# 先判斷單鏈表是否為空
if self.head is None:
self.head = LNode(elem, None)
return
p = self.head
# 需要將指針移動到鏈表的表尾
while p.next is not None:
p = p.next
p.next = LNode(elem, None)
return
def reverse_list(self):
if self.head is None:
return
p = self.head
current = self.head.next
p.next = None
# 引入第三個指針來逆序鏈表
while current is not None:
temp = current.next
current.next = p
p = current
current = temp
self.head = p # 最后記得將頭指針指向當(dāng)前頭結(jié)點的位置
def printall(self):
p = self.head
while p:
print p.elem
p = p.next
if __name__ == '__main__':
single_list = LinkList()
for i in range(6):
single_list.append(i)
single_list.printall()
"""
0
1
2
3
4
5
"""
single_list.reverse_list()
single_list.printall()
"""
5
4
3
2
1
0
"""