首页 > 动态 > 正文

如何利用python构造线性链式存储

1 问题

在进行复杂算法时难以进行操作计算和存储数据信息的增删。信息插入和删除操作复杂,不能实现数据任意长度,还有要考虑数据位置加大了运算难度等问题。


(资料图片仅供参考)

2 方法

用文字描述解题思路,可配合一些图形以便更好的阐述。解决问题的步骤采用如下方式:

利用链表结点,定义恰当的数据类型表示,定义一个节点类,类中包含两个属性,用于存储数据的数据域和存储下一个节点的节点域;

给每一个属性赋初始值,避免在初始化对象时出现问题,使用rand()接受随机数的种子,利用for循环逐个输出,使链表逐个释放;

使用switch()进行实践运行。

通过实验、实践等证明提出的方法是有效的,是能够解决开头提出的问题。

代码清单 1

#-*- coding: utf-8 -*-__author__ = "MrHero"class SqList(object): def __init__(self, size): self.data = list(None for _ in range(size)) self.length = 0 self.max_size = size def add_item(self, item): if self.length < self.max_size: self.data[self.length] = item self.length += 1 else: raise IndexError("List is full !") def create_list(self, tar_list): for i, item in enumerate(tar_list): if self.length >= self.max_size: raise IndexError("List is full!") else: self.add_item(tar_list[i]) def delete(self, i): if i > self.length or i <= 0: raise IndexError("Index is out of range") else: j = i while j < self.length: self.data[j-1] = self.data[j] j += 1 self.data[self.length - 1] = None self.length -= 1 def get_elem(self, i): if i > self.length or i <= 0: raise IndexError("Index is out of range") else: return self.data[i-1]

3 结语

针对计数时容易出错,数据不突出和不明显,利用srand和rand以及for循环及switch进行函数构造,利用链式存储的特性,更加灵活便捷。但浪费空间,操作复杂。

关键词:


您可能也喜欢这些文章

Copyright   2015-2022 世界音箱网 版权所有  备案号:琼ICP备2022009675号-1   联系邮箱:435 227 67@qq.com