Python實現順序表

  • 線性表是具有相同數據類型的n個數據元素的有限序列
  • 順序表即線性表的順序存儲結構。它是通過一組地址連續的存儲單元對線性表中的數據進行存儲的,相鄰的兩個元素在物理位置上也是相鄰的。比如,第1個元素是存儲在線性表的起始位置LOC(1),那麼第i個元素即是存儲在LOC(1)+(i-1)*sizeof(ElemType)位置上,其中sizeof(ElemType)表示每一個元素所佔的空間。

在這裏插入圖片描述

Python實現 順序表

class SeqList(object):
    def __init__(self,max = 10):
        self.max = max #默認順序表最多容納10個元素
        #初始化順序表數組
        self.num = 0
        self.data = [None] * self.max #佔位了10個
    
    def is_empty(self): #判斷線性表是否爲空
        return self.num is 0
    
    def is_full(self): #判斷線性表是否全滿
        return self.num is self.max
    
    def __getitem__(self,index):#獲取線性表中某一位置的值
        if not isinstance(index,int):
            raise TypeError
        if 0 <= index <self.max:
            return self.data[index]
        else:
            raise IndexError
    def __setitem__(self,index,value): # 修改線性表中的某一位置的值
        if not isinstance(index,int):
            raise TypeError
        if 0<=index<self.max:
            self.data[index] = value
        else:
            raise IndexError
    
    def locate_item(self,value): #按值查找第一個等於該值得索引
        for i in range(self.num):
            if self.data[i] == value:
                return i
        return -1
    
    def count(self): # 返回線性表中元素的個數
        return self.num
    
    def append_last(self,value): #在表尾部插入一個元素
        if self.num > self.max:
            print("list is full")
        else:
            self.data[self.num] = value
            self.num += 1
            
    def insert(self,index,value):  # 在表中任意位置插入一個元素
        if self.num>=self.max:
            print("list is full")
        if not isinstance(index,int):
            raise TypeError
        if index<0 or index>self.num:
            raise IndexError
        print('num :',self.num)
        for i in range(self.num,index,-1):
            self.data[i]=self.data[i-1]
        self.data[index]=value
        self.num += 1
    
    def remove(self,index): #刪除表中某一位置的值
        if not isinstance(index,int):
            raise TypeError
        if index < 0 or index >= self.num:
            raise IndexError
        for i in range(index,self.num):
            self.data[i] = self.data[i+1]
        self.num -= 1
    
    
    def print_list(self): #輸出操作
        for i in range(0,self.num):
            print(self.data[i])
    
    def destroy(self):
        self.__init__() 
if __name__ == '__main__':
    seqlist=SeqList()
    print(seqlist.is_empty())
    print(seqlist[3])
    seqlist[2] = 5
    print(seqlist[2])
    seqlist.append_last(7)
    seqlist.append_last(4)
    seqlist.append_last(6)
    seqlist.append_last(3)
    seqlist.insert(3,11)
#     seqlist.remove(3)
  
    print("---------")
    seqlist.print_list()
    print("---------")
    for x in seqlist:
        print(x)
    print("---------")
    seqlist.destroy()
#     for x in seqlist:
#         print(x)
    seqlist.print_list()
結果:
	True
	None
	5
	num : 4
	*******
	7
	4
	6
	11
	3
	*******
	7
	4
	6
	11
	3
	None
	None
	None
	None
	None
	*******

瞭解__getitem__
https://blog.csdn.net/Sirow/article/details/103890206

發佈了27 篇原創文章 · 獲贊 8 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章