简易链表
导入模块
import datetime
import uuid
初始化链表单个节点中包含的元素
def block(args):
node = {
'content': {
'username': args[0],
'c_time': args[1],
'hash_id': uuid.uuid4().hex
},
'prev': None, # 指向上一个节点的hash_id
'next': None # 指向下一个节点的hash_id
}
return node
- 单链表
最后一个节点的next为None
class LinkList:
"""链表"""
def __init__(self):
self.link_list = []
def add_single(self, args):
"""单链表添加"""
node = block(args)
if self.link_list:
self.link_list[-1]['next'] = node['content']['hash_id']
self.link_list.append(node)
if __name__ == '__main__':
c_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
params = ('小红', c_time)
obj = LinkList()
obj.add_single(params)
params = ('小红', c_time)
obj.add_single(params)
params = ('小红', c_time)
obj.add_single(params)
print(obj.link_list)
输出
[
{'content': {'username': '小红', 'c_time': '2022-06-13 17:09:19', 'hash_id': 'b6b69684cbc64ac3a25bf182010af2f2'}, 'prev': None, 'next': '1da4075ca4474862ae80d32defe771c6'}
{'content': {'username': '小红', 'c_time': '2022-06-13 17:09:19', 'hash_id': '1da4075ca4474862ae80d32defe771c6'}, 'prev': None, 'next': '62a813d2b0144e5c91242c9838c6f6f5'}
{'content': {'username': '小红', 'c_time': '2022-06-13 17:09:19', 'hash_id': '62a813d2b0144e5c91242c9838c6f6f5'}, 'prev': None, 'next': None}
]
- 单向循环链表
最后一个节点的next指定第一个节点的hash_id
class LinkList:
"""链表"""
def __init__(self):
self.link_list = []
def add_single_range(self, args):
"""单向循环列表添加"""
node = block(args)
if self.link_list:
self.link_list[-1]['next'] = node['content']['hash_id']
node['next'] = self.link_list[0]['content']['hash_id']
self.link_list.append(node)
if __name__ == '__main__':
c_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
params = ('小红', c_time)
obj = LinkList()
obj.add_single_range(params)
params = ('小红', c_time)
obj.add_single_range(params)
params = ('小红', c_time)
obj.add_single_range(params)
print(obj.link_list)
输出
[
{'content': {'username': '小红', 'c_time': '2022-06-13 17:12:10', 'hash_id': '9f22a41d5c8d4815b771d05e2f9afd5e'}, 'prev': None, 'next': '28e33c106f444798b4905c35a64bd4fa'}
{'content': {'username': '小红', 'c_time': '2022-06-13 17:12:10', 'hash_id': '28e33c106f444798b4905c35a64bd4fa'}, 'prev': None, 'next': '7695ee7b9c064aec924b9984f481d31b'}
{'content': {'username': '小红', 'c_time': '2022-06-13 17:12:10', 'hash_id': '7695ee7b9c064aec924b9984f481d31b'}, 'prev': None, 'next': '9f22a41d5c8d4815b771d05e2f9afd5e'}
]
- 双向循环链表
最后一个节点的next指向第一个节点的hash_id,第一个节点的prev指向最后一个节点的hash_id
class LinkList:
"""链表"""
def __init__(self):
self.link_list = []
def add_range(self, args):
"""双向循环列表"""
node = block(args)
if self.link_list:
self.link_list[-1]['next'] = node['content']['hash_id']
node['next'] = self.link_list[0]['content']['hash_id']
self.link_list[0]['prev'] = node['content']['hash_id']
node['prev'] = self.link_list[-1]['content']['hash_id']
self.link_list.append(node)
if __name__ == '__main__':
c_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
params = ('小红', c_time)
obj = LinkList()
obj.add_range(params)
params = ('小红', c_time)
obj.add_range(params)
params = ('小红', c_time)
obj.add_range(params)
print(obj.link_list)
输出
{'content': {'username': '小红', 'c_time': '2022-06-13 17:15:22', 'hash_id': '9c8551109e15420ca6c1de771214087a'}, 'prev': 'fefb95f2b5e14bd5a386365cd681be2a', 'next': '4940219b2f40444e9b57613ecd01ad7c'}
{'content': {'username': '小红', 'c_time': '2022-06-13 17:15:22', 'hash_id': '4940219b2f40444e9b57613ecd01ad7c'}, 'prev': '9c8551109e15420ca6c1de771214087a', 'next': 'fefb95f2b5e14bd5a386365cd681be2a'}
{'content': {'username': '小红', 'c_time': '2022-06-13 17:15:22', 'hash_id': 'fefb95f2b5e14bd5a386365cd681be2a'}, 'prev': '4940219b2f40444e9b57613ecd01ad7c', 'next': '9c8551109e15420ca6c1de771214087a'}

被折叠的 条评论
为什么被折叠?



