设计一个python程序,可以让用户输入数据来新增学生数据节点,并建立一个单向链表。当用户输入结束后,可遍历此链表,并显示其内容,并求出当前链表中所以学生的数学与英语的平均成绩。此学生节点的结构数据类型如下:
clss student:
def __init__(self):
self.name=''
self.Math=0
self.Eng=0
self.no=''
self.next=None
范例程序:
import sys
class student:
def __init__(self):
self.name=''
self.Math=0
self.Eng=0
self.no=''
self.next=None
head=student()
head.next=None
ptr=head
Msum=0
Esum=0
num=0
student_no=0
select=0
while select !=2:
print('(1) 新增(2)离开')
try:
select=int(input('请输入1或2:'))
except:
print('输入错误')
print('请重新输入\n')
if select ==1:
new_data=student()
new_data.name=input('姓名:')
new_data.no=input('学号:')
new_data.Math=eval(input('数学成绩:'))
new_data.Eng=eval(input('英语成绩:'))
ptr.next=new_data
new_data.next=None
num=num+1
ptr=head.next
print()
while ptr !=None:
print('姓名:%s\t学号:%s\t数学成绩:%d\t英语成绩:%d'\
%(ptr.name,ptr.no,ptr.Math,ptr.Eng))
Msum=Msum+ptr.Math
Esum=Esum+ptr.Eng
student_no=student_no+1
ptr=ptr.next
if student_no !=0:
print('---------------------------------------')
print('本链表中学生的数学平均成绩:%.2f 英语平均成绩:%.2f'\
%(Msum/student_no,Esum/student_no))
执行结果如下: