#学生成绩单向链表
#声明一个学生单向链表结构声明 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=Esum=num=student_no=0 select=0 while select !=2: print('(1)新增 (2)离开=>') try: select=int(input('请输入一个选项:')) except ValueError: print('输入错误') print('请重新输入\n') if select ==1: new_data=student() new_data.name=input('请输入姓名:') new_data.Math=eval(input('请输入数学成绩:')) new_data.Eng=eval(input('请输入英语成绩:')) new_data.no=input('请输入学号:') ptr.next=new_data new_data.next=None ptr=ptr.next #将指针移动到下一个新增元素的位置 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))
