一、思维梳理:
二、学生顺序表:
代码展示:
class Stu:
def __init__(self,name,age,address):
self.name = name
self.age = age
self.address = address
class SeqList:
def __init__(self,capacity):
self.capacity = capacity
self.size = 0
self.data = [None] * capacity
def is_full(self):
return self.size == self.capacity
def is_empty(self):
return self.size == 0
def add_end(self,student):
if self.is_full():
print("顺序表已满")
else:
self.data[self.size] = student
self.size += 1
def del_end(self):
if self.is_empty():
print("顺序表为空")
else:
self.size -= 1
def add_index(self,index,student):
if self.is_full() or index<0 or index>self.size:
print("无法添加")
else:
i = 0
while i<self.size-index:
self.data[self.size-i] = self.data[self.size-i-1]
i += 1
self.data[index] = student
self.size += 1
def del_index(self,index):
if self.is_empty() or index<0 or index>=self.size:
print("无法删除")
else:
i = index
while i<self.size-1:
self.data[i] = self.data[i+1]
i += 1
self.size -= 1
def change_index(self,index,student):
if self.is_empty() or index<0 or index>=self.size:
print("无法修改")
else:
self.data[index] = student
def change_value(self,name,student):
if self.is_empty() or student.name == name:
print("无需修改或无法修改")
else:
for i in range(self.size):
if self.data[i].name == name:
self.data[i] = student
return
else:
print("未找到想要修改的数据")
def find_index(self,name):
if self.is_empty():
print("表为空")
else:
for i in range(self.size):
if self.data[i].name == name:
return i
def show(self):
if self.is_empty():
print("顺序表为空")
else:
for i in range(self.size):
# student = self.data[i]
print(f"{i+1}、姓名:{self.data[i].name},年龄:{self.data[i].age},地址:{self.data[i].address}")
print()
if __name__ == '__main__':
seqList = SeqList(3)
student1 = Stu("张三",18,"上海")
student2 = Stu("李四", 19, "上海")
student3 = Stu("王五", 20, "上海")
student4 = Stu("马六",21,"北京")
seqList.add_end(student1)
seqList.add_end(student2)
seqList.add_end(student3)
print("原顺序表为:")
seqList.show()
print("尾删后的顺序表:")
seqList.del_end()
seqList.show()
print("按位置插入的顺序表结果:")
seqList.add_index(1,student4)
seqList.show()
print("按位置删除后的顺序表结果:")
seqList.del_index(1)
seqList.show()
print("按位置改变的顺序表结果:")
seqList.change_index(0,student3)
seqList.show()
print("按姓名改变的顺序表结果:")
seqList.change_value("王五",student1)
seqList.show()
print("按名称查找位置:")
index = seqList.find_index("张三")
print(index)
结果展示:
原顺序表为:
1、姓名:张三,年龄:18,地址:上海
2、姓名:李四,年龄:19,地址:上海
3、姓名:王五,年龄:20,地址:上海
尾删后的顺序表:
1、姓名:张三,年龄:18,地址:上海
2、姓名:李四,年龄:19,地址:上海
按位置插入的顺序表结果:
1、姓名:张三,年龄:18,地址:上海
2、姓名:马六,年龄:21,地址:北京
3、姓名:李四,年龄:19,地址:上海
按位置删除后的顺序表结果:
1、姓名:张三,年龄:18,地址:上海
2、姓名:李四,年龄:19,地址:上海
按位置改变的顺序表结果:
1、姓名:王五,年龄:20,地址:上海
2、姓名:李四,年龄:19,地址:上海
按姓名改变的顺序表结果:
1、姓名:张三,年龄:18,地址:上海
2、姓名:李四,年龄:19,地址:上海
按名称查找位置:
0