class ListNode(object):
def __init__(self):
self.val = None
self.next = None
class ListNodeHandle:
def __init__(self):
self.cur_node = None
self.k = 0
self.tail_node = None
def head_add(self, data):
"""头部添加节点"""
node = ListNode()
node.val = data
node.next = self.cur_node
if self.k == 0:
self.tail_node = node
self.k += 1
self.cur_node = node
return node
def tail_add(self, data):
"""尾部添加节点"""
node = ListNode()
node.val = data
node.next = None
if self.k == 0:
self.cur_node = node
self.k += 1
if self.tail_node:
self.tail_node.next = node
self.tail_node = node
return node
def print_all_node(self):
tmp_node = self.cur_node
while tmp_node:
print(tmp_node.val)
tmp_node = tmp_node.next
def print_head_node(self):
print("头节点:", self.cur_node.val)
def print_tail_node(self):
print("尾部节点", self.tail_node.val)
def reverse_(self, nodelist):
"""反转链表"""
list_ = []
while nodelist:
list_.append(nodelist.val)
nodelist = nodelist.next
result = ListNode()
list_node_handle = ListNodeHandle()
for val in list_:
result = list_node_handle.head_add(val)
return list_node_handle
if __name__ == '__main__':
list_node_handle = ListNodeHandle()
# 头部添加节点
list_node_handle.head_add(123)
list_node_handle.head_add(456)
# 尾部添加节点
list_node_handle.tail_add("abc")
list_node_handle.tail_add("def")
# 头部添加一个,尾部添加一个
list_node_handle.head_add(789)
list_node_handle.tail_add("hgk")
# 打印所有节点
list_node_handle.print_all_node()
# 打印头部节点
list_node_handle.print_head_node()
# 打印尾部节点
list_node_handle.print_tail_node()
# 反转链表
reverse_list_node_handle = list_node_handle.reverse_(list_node_handle.cur_node)
print("反转链表成功")
# 打印所有节点
reverse_list_node_handle.print_all_node()
# 打印头部节点
reverse_list_node_handle.print_head_node()
# 打印尾部节点
reverse_list_node_handle.print_tail_node()