Python之顺序表

class SequenceList:
    #顺序表初始化,max为最大容量的参数
    def __init__(self,max):
        self.max = max
        self.index = 0
        self.data = [None for _ in range(self.max)]
    #通过下标查找元素,如果下标的值合法,则返回下标上的元素,否则抛出异常
    def __getitem__(self,index):
        if index < 0 or index >= self.index:
            raise IndexError('index非法')
        else:
            return self.data[index]
    #通过下标插入元素,如果元素非法,抛出异常,否则修改数据元素的值
    def __setitem__(self,index,value):
        if index <= 0 or index >= self.index:
            raise IndexError('索引非法')
        else:
            self.data[index] = vlaue
    #判断顺序表是否为空
    def empty(self):
        return self.index == 0
    #插入表头元素
    def append(self,value):
        if self.index == self.max:
            return 
        else:
            self.data[self.index] = value #self.index本身不是索引下标,self.index比index多一位,因为index是从0开始,self.index从1开始
            self.index += 1
    #顺序表中任意位置插入元素
    def insert(self,index,value):
        if index <0 or index > self.index:
            return IndexError('索引非法')
        if index == self.index:
            self.append(value)
        else:
            self.data += [value]
            for i in range(self.index,index,-1):  #for i in range("开始","结尾","步长")
                self.data[i] = self.data[i-1] # 把前面的值得往后挪,就是把前面的值赋给后面,然后长度再+1
            self.data[index] = value
            self.index += 1
    #删除表尾元素
    def pop(self):
        if self.empty():
            return
        else:
            self.index -= 1
    #删除任意元素
    def delete(self,index):
        if self.empty() or index > self.index:
            raise IndexError('index非法')
        for i in range(index,self.index):
            self.data[i] = self.data[i+1]
        self.index -= 1
    #获取顺序表的长度
    def length(self):
        return self.index
    #遍历顺序表
    def traversal(self):
        for i in range(self.index):
            print(self.data[i],end=' ')
        print()                



    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值