信息Р结束Р调用类成员函数采用单链表保存数据Р图3.2插入模块流程图Р本程序采用的是尾插法,就是每次将新申请的结点插在终端结点的后面,其执行过程如图3.22所示。Р图3.22 尾插法插入操作示意图Р(3)学生信息修改模块Р首先要查找与要修改数据相匹配的信息,若没有则返回失败。否则把相应的信息输出,然后再重新输入新的数据并保存到单链表。Р(4)学生信息删除模块Р当选择删除功能时,首先输入要删除的同学的姓名,然后输入要删除的同学的学号,如果该同学存在并且姓名与学号匹配的上,则进行删除操作,否则返回失败。其流程图3.4如下:Р开始删除操作Р输入姓名Р输入学号Р姓名学号一致Р执行删除功能Р返回主菜单РNРYР图3.4删除学生信息模块流程图Р删除操作定义为将单链表的第i个结点删去。因为在单链表中结点ai存储地址在其前驱结点ai-1的指针域,所以必须首先找到ai-1的存储地址p,然后令p的next域指向ai 的后继结点,即把结点ai 从链上摘下来,最后释放结点ai的存储空间,如图3.42所示。Р图3.42在单链表中删除结点指针的变化情况Р(5)学生信息显示模块Р从单链表表头遍历整个单链表,将所有数据输出。其部分代码如下:Р void Function::Show() Р{?Р?Student *temp;Р?system("cls");Р?temp=Student_First->Next; Р?if(!temp) Р?{?cout<<"文件无数据\n\n "<<endl;Р cout<<"按任意键返回主菜单"<<endl;Р getch();Р Р Menu(); Р?}Р?elseР?{cout<<"姓名\t学号\t\t年龄\t性别\t宿舍住址\t 计算机数学英语\n";Р while(temp!=NULL)Р { temp->Out();Р temp=temp->Next; Р }