Python基础之定义一个顺序表
这是我第一次写,也是在边学边练的过程中,写的可能会有些问题,欢迎大家批评指正。
class sqlist:
def init(self,max=100): #初始化,默认分配给顺序表的空间为100个字符
self.max=max
self.length=0
self.data=[None]*max
def is_empty(self): #判断是否为空
if self.length==0:
return 1
return 0
def is_full(self): #判断是否占满空间
if self.length==self.max:
return 1
return 0
def clear(self): #删除顺序表
self.__init__()
def insert(self,i:int,data): #插入
if i<0 or i>self.max:
print('输入错误')
elif i>self.length+1:
print('超出插入范围')
key=self.length
while i<=key:
self.data[key]=self.data[key-1]
key-=1
self.data[i-1]=data
self.length+=1
def append(self,value): #末尾插入
if self.is_full():
print('sqlist is full')
self.data[self.length]=value
self.length+=1
def index(self,i:int): #查找元素
if i<0 or i>self.length:
print('输入有误')
return self.data[i-1]
def delete(self,i:int): #删除元素
if i<0 or i>self.length:
print('输入有误')
value=self.data[i-1]
key=self.length
while i<=key:
self.data[i-1]=self.data[i]
i+=1
self.length-=1
print('删除的值为:{}'.format(value))
def reverse(self): #顺序表反转
i,j=0,self.length-1
while i<j:
self.data[i],self.data[j]=self.data[j],self.data[i]
i+=1
j-=1
def plinsert(self,start:int,end:int,*data): #批量连续插入 start为插入的第一个位置,end为最后一个位置
if start>end:
print('输入有误')
if len(data)!=end-start+1:
print('输入有误')
elif start<0 or start>self.length or end>self.max:
print('输入有误')
else:
key=self.length+end-start
move=end-start+1
while move>0:
self.data[key]=self.data[key-(end-start+1)]
move-=1
key-=1
num=len(data)
key2=end-1
while num>0:
self.data[key2]=data[num-1]
key2-=1
num-=1
self.length+=end-start+1
print('插入成功')
def insert2(self,start:int,end:int,*data): #批量连续插入的另一种方法,直接调用insert方法
i=0
key=start
while i<len(data):
self.insert(key,data[i])
i+=1
key+=1
self.length += len(data)
有兴趣的朋友还可以自己实现批量删除的功能,方法与批量插入类似。
测试部分:
a=sqlist()
print(len(a.data))
a.append(1)
a.append(2)
a.append(3)
print(a.data)
print(a.length)
#a.insert(5,10)
a.insert(2,4)
print(a.data)
print(a.length)
a.clear()
print(a.data)
print(a.index(3))
a.delete(2)
print(a.data)
a.append(4)
a.reverse()
print(a.data)
print(a.index(3))
#a.plinsert(2,4,7,8,9)
#print(a.data)
#a.plinsert(3,10,0,0,0,0,0,0,0,0)
#print(a.data)
#print(a.length)
a.insert2(2,4,7,8,9)
print(a.data)