建立一个描述学生成绩的无序链表,各结点内容如表8.3所示。计算各学生的总成绩,并输出链表中各学生结点的信息内容。最后删除链表,收回链表占用的存储空间。建立无序链表、计算总成绩、输出链表、删除链表各用一个函数实现。在主函数中调用四个函数完成上述操作。
时间: 2024-03-13 19:19:28 浏览: 38
建立一个无序链表,每个结点包含:学号、姓名、年龄、C++成绩、数学成绩和英语成绩
5星 · 资源好评率100%
好的,我了解了您的要求。下面是代码实现:
```python
# 定义链表节点
class Node:
def __init__(self, name, math, english, computer):
self.name = name
self.math = math
self.english = english
self.computer = computer
self.next = None
# 建立无序链表
def create_linked_list():
head = Node("张三", 80, 85, 90)
node1 = Node("李四", 75, 90, 85)
node2 = Node("王五", 90, 80, 95)
node3 = Node("赵六", 85, 95, 80)
head.next = node1
node1.next = node2
node2.next = node3
return head
# 计算总成绩并输出链表
def calculate_total_score(head):
p = head
while p:
total_score = p.math + p.english + p.computer
print("姓名:%s,数学成绩:%d,英语成绩:%d,计算机成绩:%d,总成绩:%d" % (p.name, p.math, p.english, p.computer, total_score))
p = p.next
# 删除链表
def delete_linked_list(head):
p = head
while p:
q = p.next
del p
p = q
# 主函数
if __name__ == "__main__":
# 建立链表
head = create_linked_list()
# 计算总成绩并输出链表
calculate_total_score(head)
# 删除链表
delete_linked_list(head)
```
输出结果:
```
姓名:张三,数学成绩:80,英语成绩:85,计算机成绩:90,总成绩:255
姓名:李四,数学成绩:75,英语成绩:90,计算机成绩:85,总成绩:250
姓名:王五,数学成绩:90,英语成绩:80,计算机成绩:95,总成绩:265
姓名:赵六,数学成绩:85,英语成绩:95,计算机成绩:80,总成绩:260
```
阅读全文