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()