Python基础之定义一个顺序表

it2024-10-30  4

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)

最新回复(0)