链表的基本结构
链表是通过一个个节点(Node)组成的,每个节点都包含了称为数据域(value)和指针域(next)的基本单元,它也是一种递归的数据结构。它能保持数据之间的逻辑顺序,但存储空间不必按照顺序存储。
代码实现
class Node(object):
def __init__(self, value=None, next=None):
self._value = value
self._next = next
def get_value(self):
return self._value
def get_next(self):
return self._next
def set_value(self, value):
self._value = value
def set_next(self, next):
self._next = next
class LinkList(object):
def __init__(self):
self._head = Node()
def is_empty(self):
return self._head.get_next() == None
def add_node(self, value):
"""头部插入法"""
new_node = Node(value)
new_node.set_next(self._head.get_next())
self._head.set_next(new_node)
def remove_node(self):
"""从头部后面的第一个元素开始删除"""
if self.is_empty():
return
temp = self._head.get_next()
self._head.set_next(temp.get_next())
def show_link_list(self):
addr = self._head.get_next()
while addr != None:
print(addr.get_value())
addr = addr.get_next()
if __name__ == '__main__':
link_list = LinkList()
link_list.add_node(9)
link_list.add_node(1)
link_list.add_node(6)
link_list.add_node(5)
link_list.remove_node()
link_list.show_link_list()
输出
6
1
9
Process finished with exit code 0
图解
链表之头部插入法
链表之头部删除法