源代码:
class Student:
def __init__(self,list_max=5):
self.list_max = list_max
self.size = 0
self.l = [None] * list_max
#判满
def list_full(self):
return self.size == self.list_max
#判空
def list_empty(self):
return self.size == 0
#增加
def append_list(self,name,age,sex):
student = {"name":name,"age":age,"sex":sex}
if self.list_full():
print("列表已满")
return
else:
self.l[self.size] = student
self.size+=1
#遍历
def print_list(self):
if self.list_empty():
print("列表为空")
return
for i in range(self.size):
print(self.l[i])
#插入
def insert_list(self,name,age,sex,index):
student = {"name": name, "age": age, "sex": sex}
if self.list_full() or index<0 or index>self.list_max:
print("列表已满")
return
else:
for i in range(self.size - index):
self.l[self.size-i] = self.l[self.size-i-1]
self.l[index] = student
self.size+=1
return
#删除
def del_list_value(self,index):
if self.list_empty() or index<0 or index>=self.list_max:
print("列表为空")
return
else:
n = index
while n<self.size-1:
self.l[n] = self.l[n+1]
n+=1
self.size-=1
return
# 修改
def change_list(self, old_name, new_age, new_sex):
if self.list_empty():
print("列表为空")
return
found = False
for i in range(self.size):
if self.l[i]['name']==old_name:
self.l[i]['age'] = new_age
self.l[i]['sex'] = new_sex
found = True
if not found:
print("未查询到此人")
return
#去重
def distinct_list(self):
for i in self.l:
for j in range(self.size):
if self.l[j] == i:
n = j+1
while n<self.size:
if self.l[n] == i:
self.del_list_value(n)
else:
n+=1
if __name__ == '__main__':
student = Student()
student.append_list('张三',12,'男')
student.append_list('李四', 15, '男')
student.append_list('李四', 15, '男')
student.append_list('李四', 15, '男')
student.append_list('小王', 18, '男')
# student.append_list('小明', 12, '男')
student.print_list()
#测试
# print("*" * 100)
# student.insert_list('小明', 12, '男',1)
# student.print_list()
#
# print("*" * 100)
# student.change_list("小明",18,'女')
# student.print_list()
#
# print("*" * 100)
# student.del_list_value(2)
# student.print_list()
# print("*" * 100)
# student.distinct_list()
# student.print_list()
1、顺序表的创建:
#封装一个顺序表的类
class Student:
#显示调用构造函数
def __init__(self,list_max=5):
self.list_max = list_max
self.size = 0 #已经存储的个数
self.l = [None] * list_max
2、判满、判空
#判满
def list_full(self):
return self.size == self.list_max
#判空
def list_empty(self):
return self.size == 0
3、顺序表的增加(尾插)
函数的功能:往顺序表中增加元素。 思路:将要添加的元素,放入顺序表下标为size的位置中。
函数名:符合命名规则
函数的返回值:增加成功 返回True 增加失败 返回False
参数列表:self 顺序表、要增加的数据
注意事项:1、判满
2、增加成功,顺序表的长度自增
#增加
def append_list(self,name,age,sex):
student = {"name":name,"age":age,"sex":sex}
if self.list_full():
print("列表已满")
return
else:
self.l[self.size] = student
self.size+=1
4、顺序表的遍历
函数的功能:打印顺序表中的所有元素 (思路)
函数名:符合命名规则
函数的返回值:无
参数列表:self 顺序表
注意事项:1、判空
#遍历
def print_list(self):
if self.list_empty():
print("列表为空")
return
for i in range(self.size):
print(self.l[i])
5、顺序表任意位置插入数据
函数名:符合命名规则
函数的返回值:增加成功 返回True 增加失败 返回False
参数列表:self 顺序表、要插入的位置、要插入的数据
注意事项: 1、判满
2、判断要插入的位置是否合理
3、插入成功 顺序表长度自增
#插入
def insert_list(self,name,age,sex,index):
student = {"name": name, "age": age, "sex": sex}
if self.list_full() or index<0 or index>self.list_max:
print("列表已满")
return
else:
for i in range(self.size - index):
self.l[self.size-i] = self.l[self.size-i-1]
self.l[index] = student
self.size+=1
return
6、 顺序表任意位置删除
函数的功能:在顺序表的任意位置删除。思路(如上图)
函数名:符合命名规则
函数的返回值:增加成功 返回True 增加失败 返回False
参数列表:self 顺序表,要删除的位置
注意事项: 1、判空
2、判断要删除的位置是否合理
3、成功删除 顺序表长度自减
def del_list_value(self,index):
if self.list_empty() or index<0 or index>=self.list_max:
print("列表为空")
return
else:
n = index
while n<self.size-1:
self.l[n] = self.l[n+1]
n+=1
#删除成功,长度自减
self.size-=1
return
7、按照姓名修改
# 修改
def change_list(self, old_name, new_age, new_sex):
if self.list_empty():
print("列表为空")
return
found = False
for i in range(self.size):
if self.l[i]['name']==old_name:
self.l[i]['age'] = new_age
self.l[i]['sex'] = new_sex
found = True
if not found:
print("未查询到此人")
return
8、去重
函数功能:顺序表删掉重复的数据。思路:将顺序表遍历一遍,对每个元素而言,查找该元素后是否有跟自己相等的元素,如果有,则删除那个元素,注意不要漏删
函数的返回值:无
函数名:符合命名规则
参数列表:顺序表
注意事项:1、需要判断顺序表是否为空,表长是否大于
#去重
def distinct_list(self):
for i in self.l:
for j in range(self.size):
if self.l[j] == i:
n = j+1
while n<self.size:
if self.l[n] == i:
self.del_list_value(n)
else:
n+=1