python列表数据结构的python实现

我们知道,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))


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值