順序表——python

class SequenceList(object):
    '''順序表(數組)'''
    def __init__(self,size=6):
        # 初始化順序表
        self.max=size#最大容量,默認爲6
        self.num=0#當前儲存個數
        # 提前構建一個固定大小的列表,初始化全爲None
        self.data=[None]*self.max

    # 判斷線性表是否爲空
    def is_empty(self):
        return self.num is 0

    # 判斷線性表是否爲滿
    def is_full(self):
        return self.num is self.max

    # 獲取線性表中某一位置的值
    def get(self,index):
        if not isinstance(index,int):
            raise TypeError
        if 0<=index<self.max:
            return self.data[index]

        else:
            raise IndexError

    # 修改線性表中某一位置的值
    def set(self,index,value):
        if not isinstance(index,int):
            raise TypeError
        if 0<=index<self.max:
            self.data[index]=value
        else:
            raise IndexError

    # 返回線性表中元素的個數
    def length(self):
        return self.num

    # 在表尾插入一個元素,不需要移動其他數據元素
    def append(self,value):
        if self.num>=self.max:
            print('list is full')
        else:
            self.data[self.num]=value
            self.num+=1

    # 在表中任意位置插入一個元素,需要移動其他數據元素
    def inset(self,index,value):
        if not isinstance(index,int):
            raise TypeError
        if self.num>=self.max:
            print('list is full')

        if 0<=index<self.max:
            for i in range(self.num,index,-1):#從最後開始往後移動
                self.data[i+1]=self.data[i]
            self.data[index]=value
            self.num+=1
        else:
            raise IndexError

    # 刪除表中某一位置的值,需要移動其他數據元素
    def remove(self,index):
        if not isinstance(index,int):
            raise TypeError
        if self.num==0:
            print('list is empty')
        if 0<=index<self.max:
            for i in range(index,self.num):#向前移動
                self.data[i]=self.data[i+1]
            self.num-=1
        else:
            raise IndexError

    # 銷燬線性表
    def destroy(self):
        self.__init__()

    # 遍歷輸出
    def printlist(self):
        for i in range(self.num):
            print(self.data[i])
if __name__=="__main__":
    a=SequenceList(10)
    a.inset(0,1)
    print(a.printlist())

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章