- 線性表是具有相同數據類型的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