顺序表

作者: Zero2none | 来源:发表于2017-11-20 00:00 被阅读16次

写在前面的

所谓数据结构,为的是提供一个可以存放的地方。
与此同时,可以对这个地方进行各种各样的操作。

然而这个结构的最终目的是为了可以不用一遍遍的反正实现而成的。

开始吧

线性表则是这样一个东西,顺序表也同样如此。

对于Py交易而言自然有它独到的地方。

有一个词Pythonic可以很好的形容。

初始化

def __init__(self, maxSize=10):
    """Init the sequence list
    :param __maxSize: The max size of list length.
                    If the __maxSize=None, it means length -> ∞.
    """
    super(SequenceList, self).__init__()

    self.__check(maxSize)

    self.List = []

    self.__maxSize = maxSize

这便是Py交易的初始化,

Py交易中有一个List的内置数据结构可以很轻松地完成,
对于顺序表的四个操作,嗯~它都有,只不过在这里,通过顺序表进行封装起来而已。

销毁

def __del__(self):
    """Built-in function: To clear the list.
    """
    self.List.clear()

Py交易类的专有方法,析构函数,或者也可以通过自定义函数实现,不过
某种意义上而言,对于Py交易并不需要析构函数,Py交易的垃圾回收机制可以很好的解决这个问题。

长度

def __len__(self):
    """Built-in func: Get the length of the list.
    """
    return len(self.List)

Py交易类的专有方法,可以返回一个类的‘长度’。
函数本身反正调用的是List本身的len()函数。

遍历操作

def traverse_register(self, fn):
    """A decorator for fitness function register.
    :param fn: The func make by yourself.
    """
    self.func = fn

遍历操作,在遍历之前需要用语法糖将遍历注册倒traverse_register()函数中。

遍历,可不单单指的是输出哦~

def traverse(self, reverse=False):
    """Traverse The every element of list.
    :prarm reverse: Reverse list to traverse.
    """
    List = self.List
    if reverse:
        List = reversed(List)

    for i in List:
        self.func(i)

遍历开始了,Py交易对循环支持的很好,这里为了更Pythonic,而增加了reverse参数支持反向遍历。

追加操作

def append(self, data):
    """Append element element to list.
    :param data: The element that append to.
    """
    if self.flag:
        if not len(self) < self.__maxSize:
            raise AttributeError(
                'The parameter index must be less than __maxSize. ¯\\_(ツ)_/¯...')
    self.List.append(data)
    """
    There hava a question about the variable of "data".
    Should keep the instance of the SequenceList? or not?

    In the data structure it is controled by __maxSize. 
    """

append()函数这是一个启动整个数据结构的函数,没有了这个函数嘛,¯\(ツ)/¯ ...

同样Py交易调用的是本身List内置方法来实现。


疑问

其实刚开始写到这里的时候是有两个疑问

  1. 是否应该固定顺序表的长度呢?
  2. 是否应该确保顺序表内每个元素的类型相同?
回答

依次回答

  1. 为此,甚至而外增加了个参数maxSize用来控制顺序表的长度,看实际情况喽。
  2. 其实不用控制每个元素的类型反而是有益的 -> Pythonic

SourceCode


最后,就酱

相关文章

  • 数据结构与算法(二,线性表的顺序存储结构,穷举法(冒泡和选择排序

    线性表 顺序表 顺序表的特性 顺序表的元素有前驱和后继 顺序表有size 顺序表的增删改查 顺序表的优缺点优点:尾...

  • 顺序表-动态顺序表

    顺序表是逻辑上相邻的元素物理也相邻的。 静态内存是指在程序开始运行时由编译器分配的内存,它的分配是在程序开始编译时...

  • 顺序表-静态顺序表

    线性表,全名为线性存储结构。将具有“一对一”关系的数据“线性”地存储到物理空间中,这种存储结构就称为线性存储结构(...

  • 线性表之顺序存储-顺序表

    顺序表的操作 [x] 向有序顺序表插入一个元素 [x] 顺序表的冒泡排序 [x] 顺序表的删除操作 [x] 顺序表...

  • 数据结构之线性表

    1、线性表-顺序表线性表-顺序表

  • 线性表-顺序表与单链表

    顺序表 线性表的顺序存储,是逻辑相邻,物理存储地址也相邻。 结构定义 顺序表的初始化 顺序表的插入 顺序表的取值 ...

  • 顺序表和链表的区别

    参考:线性表和链表的区别 注:参考文中的‘线性表’准确的说应该是’顺序表‘,链表与顺序表都是线性表。 顺序表:顺序...

  • 快速理解数据结构中链表

    组织数据作用的线性表分为顺序表和链表 顺序表:平常所使用的各类数组均为顺序表,即存储逻辑顺序和物理顺序相同。较常见...

  • 顺序表

    在程序中,经常需要将一组(通常是同为某个类型的)数据元素作为整体管理和使用,需要创建这种元素组,用变量记录它们,传...

  • 顺序表

    https://blog.csdn.net/qq_41943578/article/details/82934644

网友评论

    本文标题:顺序表

    本文链接:https://www.haomeiwen.com/subject/jsrmvxtx.html