python列表数据结构的python实现

版权声明:本文为博主原创文章,未经博主允许可以转载。 https://blog.csdn.net/killeri/article/details/82825137

我们知道,python列表已经实现了一个线性表的所有操作和结构要求,它是通过C语言实现的,那么我们今天就用python语言本身再实现一次线性表的数据结构。

class List:
    def __init__(self, *elements):
        self._list = list(*elements)

    def __str__(self):
        return str(self._list)

    def is_empty(self):
        if len(self._list):
            return False
        return True

    def len(self):
        return len(self._list)

    # 在表第一项进行插入
    def prepend(self, elem):
        self._list.insert(0, elem)

    # 最后一项进行插入
    def append(self, elem):
        self._list.append(elem)

    def insert(self, elem, i):
        self._list.insert(i, elem)

    def del_first(self):
        del self._list[0]

    def del_last(self):
        del self._list[len(self._list)-1]

    # 查找elem在列表中的所有下标,有,就返回下标列表;没有,就返回-1。
    def search(self, elem):
        _ls = list()
        for i in range(len(self._list)):
            if self._list[i] == elem:
                _ls.append(i)
        if _ls:
            return _ls
        return -1

    def forall(self, add):
        return [add(i) for i in self._list]
    # 这里返回了一个新列表,而不是之前的self._list,所以要注意

def addone(x):
    x += "addone"
    return x


emptyList = List()
print(emptyList.is_empty())
print(emptyList.len())
emptyList.prepend("head")
emptyList.append("tail")
emptyList.insert("insertElement", 1)
print(emptyList)
print(emptyList.is_empty())
print(emptyList.len())

emptyList.del_first()
emptyList.del_last()

print(emptyList.search("insertElement"))
print(emptyList.search("head"))

emptyList.forall(addone)
print(emptyList.forall(addone))


由上,我们就实现了一个线性表的实现,关于线性表的各种操作,如建立空表,初始化的表,表的修改,表的遍历等,都进行了实现。

猜你喜欢

转载自blog.csdn.net/killeri/article/details/82825137
今日推荐