问题描述 利用分块查找算法在线性表(学生情况表)list中查找给定值key(学号)的结点,并将该结点的部分数据进行修改。 2.基本要求 输入学号、选择课程名、输入修改后的成绩,
时间: 2024-02-16 14:59:51 浏览: 54
实现学生的学号成绩录入修改显示
根据您的问题描述,我可以提供以下代码示例:
```python
class Node:
def __init__(self, stu_no, stu_name, course_name, score):
self.stu_no = stu_no
self.stu_name = stu_name
self.course_name = course_name
self.score = score
class StudentList:
def __init__(self):
self.node_list = []
self.block_size = 3
def add_node(self, stu_no, stu_name, course_name, score):
self.node_list.append(Node(stu_no, stu_name, course_name, score))
def search_node(self, key):
for i in range(0, len(self.node_list), self.block_size):
if self.node_list[i].stu_no <= key <= self.node_list[i+self.block_size-1].stu_no:
for j in range(i, i+self.block_size):
if self.node_list[j].stu_no == key:
return j
return -1
def modify_node(self, key):
index = self.search_node(key)
if index == -1:
print("未找到该学号的学生信息!")
else:
course_name = input("请输入课程名:")
new_score = int(input("请输入修改后的成绩:"))
self.node_list[index].course_name = course_name
self.node_list[index].score = new_score
print("修改成功!")
# 测试代码
list1 = StudentList()
list1.add_node(1001, "张三", "数学", 80)
list1.add_node(1004, "李四", "英语", 90)
list1.add_node(1007, "王五", "语文", 85)
list1.add_node(1010, "赵六", "物理", 70)
stu_no = int(input("请输入学号:"))
list1.modify_node(stu_no)
```
以上代码实现了一个 `StudentList` 学生情况表类,其中包括了添加学生信息、查找学生信息、修改学生信息等功能。其中,查找学生信息采用的是分块查找算法,将学生情况表按照一定的块大小进行划分,然后进行查找。修改学生信息则是根据查找到的结点索引进行修改,并且需要输入课程名和修改后的成绩。在测试代码中,通过输入学号来调用修改学生信息的功能。
阅读全文