最近寝室管得严 得早点出来 省得费事 还得签名

恩 的确如此 不过我得睡足觉阿  呼呼
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,下面是使用链表完成上述操作的代码,并且考虑了修改寝室信息时学生信息的寝室号也得有相应改动的情况。 ```python class Student: def __init__(self, name, id_num, gender, dorm_num): self.name = name self.id_num = id_num self.gender = gender self.dorm_num = dorm_num self.next = None class Dormitory: def __init__(self, dorm_num, capacity): self.dorm_num = dorm_num self.capacity = capacity self.head = None self.next = None def add_student(self, name, id_num, gender): if not self.head: self.head = Student(name, id_num, gender, self.dorm_num) return True else: curr_student = self.head prev_student = None while curr_student: prev_student = curr_student curr_student = curr_student.next if prev_student and prev_student.dorm_num != self.dorm_num: return False prev_student.next = Student(name, id_num, gender, self.dorm_num) return True def remove_student(self, id_num): curr_student = self.head prev_student = None while curr_student: if curr_student.id_num == id_num: if prev_student: prev_student.next = curr_student.next else: self.head = curr_student.next return True prev_student = curr_student curr_student = curr_student.next return False class DormitoryList: def __init__(self): self.head = None def add_dormitory(self, dorm_num, capacity): if not self.head: self.head = Dormitory(dorm_num, capacity) return True else: curr_dormitory = self.head prev_dormitory = None while curr_dormitory: prev_dormitory = curr_dormitory curr_dormitory = curr_dormitory.next if prev_dormitory and prev_dormitory.dorm_num >= dorm_num: return False prev_dormitory.next = Dormitory(dorm_num, capacity) return True def remove_dormitory(self, dorm_num): curr_dormitory = self.head prev_dormitory = None while curr_dormitory: if curr_dormitory.dorm_num == dorm_num: if prev_dormitory: prev_dormitory.next = curr_dormitory.next else: self.head = curr_dormitory.next return True prev_dormitory = curr_dormitory curr_dormitory = curr_dormitory.next return False def add_student(self, dorm_num, name, id_num, gender): curr_dormitory = self.head while curr_dormitory: if curr_dormitory.dorm_num == dorm_num: if curr_dormitory.add_student(name, id_num, gender): return True else: return False curr_dormitory = curr_dormitory.next return False def remove_student(self, id_num): curr_dormitory = self.head while curr_dormitory: if curr_dormitory.remove_student(id_num): return True curr_dormitory = curr_dormitory.next return False def modify_dormitory_info(self, dorm_num, capacity): curr_dormitory = self.head while curr_dormitory: if curr_dormitory.dorm_num == dorm_num: curr_dormitory.capacity = capacity curr_student = curr_dormitory.head while curr_student: curr_student.dorm_num = dorm_num curr_student = curr_student.next return True curr_dormitory = curr_dormitory.next return False ``` 在上述代码中,`Student` 类表示学生,包含姓名、学号、性别、寝室号和指向下一位学生的指针。`Dormitory` 类表示一个寝室,包含寝室号、容量、指向第一位学生的指针和指向下一间寝室的指针。`DormitoryList` 类表示寝室列表,包含指向第一间寝室的指针。其中,`add_student` 方法和 `remove_student` 方法用于向寝室中添加或删除学生,`add_dormitory` 方法和 `remove_dormitory` 方法用于向寝室列表中添加或删除寝室,`add_student` 方法和 `remove_student` 方法用于向指定寝室中添加或删除学生,`modify_dormitory_info` 方法用于修改指定寝室的容量,并且修改该寝室中所有学生的寝室号。 下面是一个简单的测试: ```python dorm_list = DormitoryList() # 添加寝室 dorm_list.add_dormitory(101, 4) dorm_list.add_dormitory(102, 4) dorm_list.add_dormitory(103, 4) # 添加学生 dorm_list.add_student(101, "张三", "20210001", "男") dorm_list.add_student(101, "李四", "20210002", "女") dorm_list.add_student(102, "王五", "20210003", "男") dorm_list.add_student(102, "赵六", "20210004", "女") # 移除学生 dorm_list.remove_student("20210002") # 修改寝室信息 dorm_list.modify_dormitory_info(101, 5) # 打印寝室列表 curr_dormitory = dorm_list.head while curr_dormitory: print("寝室号:{},容量:{}".format(curr_dormitory.dorm_num, curr_dormitory.capacity)) curr_student = curr_dormitory.head while curr_student: print("姓名:{},学号:{},性别:{},寝室号:{}".format(curr_student.name, curr_student.id_num, curr_student.gender, curr_student.dorm_num)) curr_student = curr_student.next curr_dormitory = curr_dormitory.next ``` 输出: ``` 寝室号:101,容量:5 姓名:张三,学号:20210001,性别:男,寝室号:101 寝室号:102,容量:4 姓名:王五,学号:20210003,性别:男,寝室号:102 姓名:赵六,学号:20210004,性别:女,寝室号:102 寝室号:103,容量:4 ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值