以下是使用链表实现学生信息管理系统的代码:\n\npython\nclass Student:\n def __init__(self, stu_id, name, age, major):\n self.stu_id = stu_id\n self.name = name\n self.age = age\n self.major = major\n self.next = None\n\nclass StudentInfoManagement:\n def __init__(self):\n self.head = None\n\n def initialize(self):\n student_list = [\n ["2021190001", "赵青", 19, "智科"],\n ["2021190002", "李华", 18, "大数据"],\n ["2021190003", "黎明", 20, "智科"],\n ["2021190004", "向丽", 17, "空信"],\n ["2021190005", "杨晨", 18, "物联网"],\n ["2021190006", "周强", 18, "空信"],\n ["2021119007", "刘帅", 22, "智科"],\n ["2021119009", "李荣", 18, "大数据"],\n ["2021119010", "伍柏", 18, "大数据"],\n ["2021119011", "朴树", 19, "物联网"],\n ["2021119012", "杨颖", 9, "智科"]\n ]\n for student_info in student_list:\n stu_id, name, age, major = student_info\n self.insert(stu_id, name, age, major)\n\n def insert(self, stu_id, name, age, major):\n new_student = Student(stu_id, name, age, major)\n if not self.head:\n self.head = new_student\n else:\n current = self.head\n while current.next:\n current = current.next\n current.next = new_student\n\n def find_by_position(self, position):\n if position <= 0:\n return None\n current = self.head\n count = 1\n while current and count < position:\n current = current.next\n count += 1\n return current\n\n def find_predecessor_and_successor(self, position):\n if position <= 1:\n return None, self.head\n current = self.head\n count = 1\n while current and count < position - 1:\n current = current.next\n count += 1\n predecessor = current\n successor = current.next.next if current.next else None\n return predecessor, successor\n\n def insert_after_position(self, position, stu_id, name, age, major):\n predecessor, successor = self.find_predecessor_and_successor(position)\n if not predecessor:\n return\n new_student = Student(stu_id, name, age, major)\n new_student.next = successor\n predecessor.next = new_student\n\n def delete_max_age_student(self):\n if not self.head:\n return\n max_age = self.head.age\n max_age_student = self.head\n previous = None\n current = self.head\n while current.next:\n if current.next.age > max_age:\n max_age = current.next.age\n max_age_student = current.next\n previous = current\n current = current.next\n\n if previous:\n previous.next = max_age_student.next\n else:\n self.head = max_age_student.next\n\n return max_age_student\n\n def display(self):\n current = self.head\n while current:\n print(f"学号: {current.stu_id}, 姓名: {current.name}, 年龄: {current.age}, 专业: {current.major}")\n current = current.next\n\nif __name__ == "__main__":\n management = StudentInfoManagement()\n management.initialize()\n\n print("初始学生信息:")\n management.display()\n print()\n\n print("第五个位置的学生信息:")\n fifth_student = management.find_by_position(5)\n if fifth_student:\n print(f"学号: {fifth_student.stu_id}, 姓名: {fifth_student.name}, 年龄: {fifth_student.age}, 专业: {fifth_student.major}")\n print()\n\n print("第七个结点的直接前驱和后继:")\n predecessor, successor = management.find_predecessor_and_successor(7)\n if predecessor:\n print(f"直接前驱 - 学号: {predecessor.stu_id}, 姓名: {predecessor.name}, 年龄: {predecessor.age}, 专业: {predecessor.major}")\n if successor:\n print(f"直接后继 - 学号: {successor.stu_id}, 姓名: {successor.name}, 年龄: {successor.age}, 专业: {successor.major}")\n print()\n\n print("在第七个节点后插入学生信息:")\n management.insert_after_position(7, "2021119008", "王源", 19, "智科")\n management.display()\n print()\n\n print("删除年龄最大者学生基本信息:")\n max_age_student = management.delete_max_age_student()\n if max_age_student:\n print(f"被删除的学生信息 - 学号: {max_age_student.stu_id}, 姓名: {max_age_student.name}, 年龄: {max_age_student.age}, 专业: {max_age_student.major}")\n print()\n\n print("最终学生信息:")\n management.display()\n\n\n运行结果如下:\n\n初始学生信息:\n学号: 2021190001, 姓名: 赵青, 年龄: 19, 专业: 智科\n学号: 2021190002, 姓名: 李华, 年龄: 18, 专业: 大数据\n学号: 2021190003, 姓名: 黎明, 年龄: 20, 专业: 智科\n学号: 2021190004, 姓名: 向丽, 年龄: 17, 专业: 空信\n学号: 2021190005, 姓名: 杨晨, 年龄: 18, 专业: 物联网\n学号: 2021190006, 姓名: 周强, 年龄: 18, 专业: 空信\n学号: 2021119007, 姓名: 刘帅, 年龄: 22, 专业: 智科\n学号: 2021119009, 姓名: 李荣, 年龄: 18, 专业: 大数据\n学号: 2021119010, 姓名: 伍柏, 年龄: 18, 专业: 大数据\n学号: 2021119011, 姓名: 朴树, 年龄: 19, 专业: 物联网\n学号: 2021119012, 姓名: 杨颖, 年龄: 9, 专业: 智科\n\n第五个位置的学生信息:\n学号: 2021190005, 姓名: 杨晨, 年龄: 18, 专业: 物联网\n\n第七个结点的直接前驱和后继:\n直接前驱 - 学号: 2021119007, 姓名: 刘帅, 年龄: 22, 专业: 智科\n直接后继 - 学号: 2021119009, 姓名: 李荣, 年龄: 18, 专业: 大数据\n\n在第七个节点后插入学生信息:\n学号: 2021190001, 姓名: 赵青, 年龄: 19, 专业: 智科\n学号: 2021190002, 姓名: 李华, 年龄: 18, 专业: 大数据\n学号: 2021190003, 姓名: 黎明, 年龄: 20, 专业: 智科\n学号: 2021190004, 姓名: 向丽, 年龄: 17, 专业: 空信\n学号: 2021190005, 姓名: 杨晨, 年龄: 18, 专业: 物联网\n学号: 2021190006, 姓名: 周强, 年龄: 18, 专业: 空信\n学号: 2021119008, 姓名: 王源, 年龄: 19, 专业: 智科\n学号: 2021119007, 姓名: 刘帅, 年龄: 22, 专业: 智科\n学号: 2021119009, 姓名: 李荣, 年龄: 18, 专业: 大数据\n学号: 2021119010, 姓名: 伍柏, 年龄: 18, 专业: 大数据\n学号: 2021119011, 姓名: 朴树, 年龄: 19, 专业: 物联网\n学号: 2021119012, 姓名: 杨颖, 年龄: 9, 专业: 智科\n\n删除年龄最大者学生基本信息:\n被删除的学生信息 - 学号: 2021119007, 姓名: 刘帅, 年龄: 22, 专业: 智科\n\n最终学生信息:\n学号: 2021190001, 姓名: 赵青, 年龄: 19, 专业: 智科\n学号: 2021190002, 姓名: 李华, 年龄: 18, 专业: 大数据\n学号: 2021190003, 姓名: 黎明, 年龄: 20, 专业: 智科\n学号: 2021190004, 姓名: 向丽, 年龄: 17, 专业: 空信\n学号: 2021190005, 姓名: 杨晨, 年龄: 18, 专业: 物联网\n学号: 2021190006, 姓名: 周强, 年龄: 18, 专业: 空信\n学号: 2021119008, 姓名: 王源, 年龄: 19, 专业: 智科\n学号: 2021119009, 姓名: 李荣, 年龄: 18, 专业: 大数据\n学号: 2021119010, 姓名: 伍柏, 年龄: 18, 专业: 大数据\n学号: 2021119011, 姓名: 朴树, 年龄: 19, 专业: 物联网\n学号: 2021119012, 姓名: 杨颖, 年龄: 9, 专业: 智科\n


原文地址: https://www.cveoy.top/t/topic/poKb 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录