一、顺序表的定义
1.用顺序存储的方式实现线性表
2.把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接
二、顺序表操作
1.初始化表
2.销毁操作
3.插入操作
4.删除操作
5.按值查找
6.按位查找
7.求表长
8.输出操作
9.判空操作
三、顺序表优缺点
优点:
1.操作简单
2.适用于数据量小的表
3.对于尾插入和查找数据在表中的位置时间复杂度低
缺点:
1.不适合数据量大的表
2.表结构固定,不灵活
3.增加、删除需要移动表中其他元素,时间复杂度较高
四、代码实现(python)
class CustomizeList:
# 初始化表
def __init__(self, maxSize):
self.maxSize = maxSize # 最大长度
self.dataSize = 0 # 已有数据长度
self.data = [None for i in range(self.maxSize)] # 表中数据
# 初始化数据
def InitData(self, element):
if len(element) > self.maxSize:
return -1
for i in range(len(element)):
self.data[i] = element[i]
self.dataSize += 1
return self.data, self.dataSize
# 判空
def isEmpty(self):
if self.dataSize == 0:
return True
else:
return False
# 判满
def isFull(self):
if self.dataSize == self.maxSize:
return True
else:
return False
# 按值索引
def searchByVal(self, val):
for i in range(self.dataSize):
if self.data[i] == val:
return i
return False
# 按位索引
def searchByInd(self, index: int):
if index >=0 and index < self.dataSize:
return self.data[index]
else:
return False
# 求表长
def getLen(self):
return self.dataSize
# 销毁操作
def __del__(self):
self.data = None
self.dataSize = 0
# 尾插法
def insert(self, val):
if self.isFull():
return False
self.data[self.dataSize] = val
self.dataSize += 1
# 按位插入
def insertByInd(self, val, index: int):
for i in range(index, self.dataSize + 1):
temp = self.data[i]
self.data[i + 1] = self.data[i]
self.data[i + 2] = temp
self.data[index] = val
self.dataSize += 1
# 按位修改
def updateByInd(self, val, index: int):
if index >=0 and index < self.dataSize:
self.data[index] = val
else:
return False
data = [1, 2, 3]
cusList = CustomizeList(6)
print(cusList.InitData(data))