python数据结构篇:0基础带你入门python之顺序表

class Students:
    def __init__(self, number):
        self.number = number
        self.student = [None] * number  # 固定容量的学生列表
        self.actual = 0  # 当前学生数量

    def is_full(self):
        return self.actual == self.number

    def is_empty(self):
        return self.actual == 0

    def show(self):
        if self.is_empty():
            print("没有学生")
            return False
        for i in range(self.actual):
            print(self.student[i])

    def add_stu(self, name, id, age, grade):
        if self.is_full():
            print("增加失败,班级已满")
            return False

        self.student[self.actual] = {'name': name, 'id': id, 'age': age, 'grade': grade}
        self.actual += 1

    def del_stu_id(self, idex):
        if self.is_empty() or idex < 0 or idex >= self.actual:
            print("删除失败,索引无效或班级为空")
            return False

        # 删除学生并移动后续学生
        for i in range(idex, self.actual - 1):
            self.student[i] = self.student[i + 1]

        self.student[self.actual - 1] = None  # 清空最后一个位置
        self.actual -= 1
        print(f"索引 {idex} 的学生已删除")

    def insert_stu(self, idex, name, id, age, grade):
        if self.is_full() or idex < 0 or idex > self.actual:
            print("插入失败")
            return False

        # 从后向前移动学生数据
        for i in range(self.actual, idex, -1):
            self.student[i] = self.student[i - 1]

        # 插入学生
        self.student[idex] = {'name': name, 'id': id, 'age': age, 'grade': grade}
        self.actual += 1
        print(f"学生已插入到索引 {idex}")

    def update_stu_by_id(self, id, new_data):
        for i in range(self.actual):
            if self.student[i]['id'] == id:
                # 更新学生数据
                self.student[i].update(new_data)
                print(f"学生 ID {id} 的信息已更新")
                return True
        print(f"未找到 ID 为 {id} 的学生")
        return False

if __name__ == '__main__':
    # 初始化班级容量为 5
    classroom = Students(5)

    # 添加初始学生
    classroom.add_stu("张三", 1, 16, 90)
    classroom.add_stu("李四", 2, 17, 85)
    classroom.add_stu("王五", 3, 16, 88)

    # 显示当前学生列表
    print("初始学生列表:")
    classroom.show()

    # 测试插入学生
    classroom.insert_stu(1, "赵六", 4, 18, 92)

    # 显示插入后的学生列表
    print("\n插入学生后:")
    classroom.show()

    # 测试删除学生
    classroom.del_stu_id(2)

    # 显示删除后的学生列表
    print("\n删除学生后:")
    classroom.show()

    # 测试更新学生信息
    classroom.update_stu_by_id(1, {'age': 17, 'grade': 95})

    # 显示更新后的学生列表
    print("\n更新学生信息后:")
    classroom.show()

    # 测试边界情况:删除不存在的学生
    classroom.del_stu_id(10)  # 无效索引

    # 测试边界情况:插入超出容量的学生
    classroom.add_stu("超载学生", 5, 19, 70)
    classroom.add_stu("另一个学生", 6, 20, 75)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值