六、各功能模块的算法处理流程图及相关说明 1、主函数 main() paper51.com 2、初始化函数 STUDENT *init() 内容来自论文无忧网 www.paper51.com 3、菜单选择函数 int menu_select(); 内容来自www.paper51.com 4、输入记录函数 STUDENT *create() 内容来自论文无忧网 www.paper51.com
算法:先声明一个首节点head,并将head->next设为NULL。每输入一个数据就声明一个新节点p,把p->next设为NULL,并且链接到之前列表的尾端。 copyright paper51.com N-S流程图如下: copyright paper51.com head=NULL paper51.com for(;;) http://www.paper51.com 指针p指向新开辟的单元 http://www.paper51.com 指针p是否为空 内容来自论文无忧网 www.paper51.com 是 否 内容来自www.paper51.com 输入学号p->num paper51.com
输出 p->num是否为0 内容来自论文无忧网 www.paper51.com 内存 是 否 内容来自www.paper51.com 溢出 输入姓名p->name copyright paper51.com 停止 for(i=0;i<3;i++) copyright paper51.com 输入 输入成绩 内容来自www.paper51.com 返回 p->sum=s; paper51.com 菜单 p->average=(float)s/3; 内容来自论文无忧网 www.paper51.com p->order=0; http://www.paper51.com p->next=head;head=p; 内容来自www.paper51.com 5、 记录函数 void print(STUDENT *head) 内容来自论文无忧网 www.paper51.com
算法:先将p结点的指针指向第一个结点,将p结点(即第一个结点)的数据输出。然后再将p结点的指针指向p指针的的指针(即下一结点),将p结点(即第一结点)的数据输出。重复执行此步聚直到p指针指向NULL为止。 http://www.paper51.com N-S流程图如下: http://www.paper51.com p=head,使指向第一个结点 内容来自www.paper51.com
输出p所指向的结点 paper51.com p指向一下个结点 copyright paper51.com 当p指的不是表尾 paper51.com
6、 找记录函数 void search(STUDENT *head) 内容来自www.paper51.com 算法:采用线性查找法往下一个节点查找。输入所要查找的学生的学号s,设一个指针变量p,先指向第一个结点,当strcmp(p->name,s) && p != NULL时,使p后移一个结点,如果p!=NULL,输出p所指的结点。 http://www.paper51.com N-S流程图如下: copyright paper51.com
输入要查找的学生的学号s paper51.com p=head,使p指向第一结点 内容来自www.paper51.com 当记录的学号不是要找的,或指针不为空时 http://www.paper51.com p=p->next http://www.paper51.com p!=NULL如果指针不为空 paper51.com 是 否 copyright paper51.com 显示没有该 内容来自论文无忧网 www.paper51.com 输出p所指向的结点 学生 copyright paper51.com 7、删除记录函数 STUDENT *delete(STUDENT*head) 内容来自www.paper51.com 算法:从p指向的第一个结点开始,检查该结点中的num值是否等于输入的要求删除的那个学号。如果相等就将该结点删除,如不相等,就将p后移一个结点,再如此进行下去,直到遇到表尾为止。 内容来自www.paper51.com N-S流程图如下: 内容来自论文无忧网 www.paper51.com p1=head; 内容来自论文无忧网 www.paper51.com
输入入要删除的学号s 内容来自www.paper51.com
当(strcmp(p1->num,s))&& p1 != NULL 内容来自www.paper51.com p2=p1 p1=p1->next http://www.paper51.com p1是要删除的结点 copyright paper51.com
是 否 内容来自www.paper51.com
paper51.com p1所指是头结点 copyright paper51.com 是 否 输出”找不 copyright paper51.com 到” paper51.com head=p1->next p2->next=p1-next 的信息“ (删除头结点) 内容来自论文无忧网 www.paper51.com 8、排序函数 STUDENT *sort(STUDENT *head) 内容来自www.paper51.com N-S流程图: 内容来自论文无忧网 www.paper51.com temp=head->next,head->next=NULL 内容来自www.paper51.com 当temp!=NULL时 paper51.com
t=temp;temp=temp->next;p1=head;p2=head; 内容来自www.paper51.com 当t->average<p1->average&&p1!=NULL时 copyright paper51.com p2=p1;p1=p1->next; http://www.paper51.com p1=p2 http://www.paper51.com 是 否 copyright paper51.com t->next=p1; t->next=p1; 内容来自www.paper51.com head=t; p2->next=t; 内容来自www.paper51.com p1=head; 内容来自论文无忧网 www.paper51.com 当p1!=NULL时 内容来自www.paper51.com i++;p1->order=i;p1=p1->next; http://www.paper51.com 输出“排序成功” http://www.paper51.com |