2022年2022年链表学生信息管理系统 .pdf
《2022年2022年链表学生信息管理系统 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年链表学生信息管理系统 .pdf(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、#include#include/定位小数点的头文件setprecision()#include using namespace std;struct List/定义数据结构存取文件里的数据 char name20;char id20;float score2;struct PList/定义链表结构体,如果在 c 语言中务必添加typedef struct来定义一个 PList struct PList*prior;/前一个节点 char name20;char id20;float score2;struct PList*next;/后一个节点;PList*head=NULL,*p,*p1,
2、*p2;char FileName20,Judge;/文件名和判断字符int i,n;/n 学生人数void Create()/创造链表 int j,k;p1=new PList;List*stu=new Listn;/new学生结构体 FILE*fp;fp=fopen(FileName,a+);/附加方式打开,若无则新建一个FileName 的文件 if(fp!=NULL)fseek(fp,0,0);/文件指针挪到起始位置 for(i=0;iname,stui.name);/值传递到链表中strcpy(p-id,stui.id);/值传递到链表中p-score0=stui.score0;/值
3、传递到链表中名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 10 页 -p-score1=stui.score1;/值传递到链表中if(head=NULL)/如果链表头为空 head=p;p1=p;p-prior=NULL;/新 new 出来的为 head 节点(这里 p1 一定要指向 p 或 head,方便下面继续添加链表),头结点的前一节点为NULL else p1-next=p;p-prior=p1;/否则向后添加节点p1=p;p1-next=NULL;/最后 p1-next 为空,表示链表末尾 delete n stu;/释放不需要的空间 void Print()/输出链
4、表数据 p=head;if(p=NULL)/如果 head 为空,标书没有数据 coutThere is no data!endl;else while(p!=NULL)/不为空时显示 couttName:nametID:idtProgram:setprecision(2)fixedscore0tEnglish:setprecision(2)fixedscore1next;/p指向后一个节点 void Insert1()/插入数据 p1=new PList;/新分配 p1 地址 coutp1-name;coutp1-id;coutp1-score0;coutp1-score1;if(head=
5、NULL)/head为空 head=p1;p1-next=NULL;p1-prior=NULL;名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 10 页 -p2=p1;/利用 p2 便于继续添加节点 else/head 不为空是利用 p2 添加节点 p2-next=p1;p1-prior=p2;p1-next=NULL;p2=p1;coutJudge;if(Judge=y|toupper(Judge)=Y)/判断输入是否为y 和 Y,toupper 为转换大写 Insert1();/y 和 Y 继续插入节点,再次进入时将进入insert1 中的 else 语句 else/其他则退
6、出 coutInsert Exit!n;void Insert2()/查找后在该节点(p)前方插入新的节点 p1=new PList;coutp1-name;coutp1-id;coutp1-score0;coutp1-score1;if(p=head)/查找的节点为头结点时 p-prior=p1;p1-next=p;p1-prior=NULL;head=p1;p=head;/new出来的 p1 设为头结点,p(原头节点)的前节点指向 p1,p1 后节点指向 p,然后 head 和 p 重新指向 p1 else/查找的节点非头结点 p2-next=p1;p1-prior=p2;p1-next=
7、p;p-prior=p1;/p2与 p 之间插入 p1 p=p1;/方便继续插入p2 与 p 保持前后节点关系 coutJudge;if(Judge=y|toupper(Judge)=Y)Insert2();else coutInsert Exit!n;名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 10 页 -void Insert3()/查找后在该节点(p)后方插入新的节点 p1=new PList;coutp1-name;coutp1-id;coutp1-score0;coutp1-score1;if(p=head)/如果 p 是头结点 p1-next=p-next;/ne
8、w出来的 p1-next 节点要指向 p-next 节点 if(p-next!=NULL)/如果 p 的后一节点不为空 p-next-prior=p1;/那必须使它的前一节点指向p1,如果为空那就是NULL 所以不用 p-next=p1;p1-prior=p;p=p1;/p的下一结点给 p1,p1 的前一节点给 p,p 指向 p1(方便继续插入,此时p2 指向 head,p2 和 p 保持前后节点)else/p 为非头结点,在 p 后方插入新节点,此时 p2 为 p 的前节点,需要判断 p 的下一结点是否为空 p2=p;p=p-next;p2-next=p1;p1-prior=p2;p1-ne
9、xt=p;/p2和 p 各向后移动一个节点,在 p2 与 p 之间插入一个 p1 节点 if(p!=NULL)/判断 p 是否为空,也就是刚开始的p-next 是否为空p-prior=p1;/不为空则需要设置前一节点给p1,为空则不需要 p=p1;/利于继续插入节点,保证 p2 与 p 保持前后节点关系 coutJudge;if(Judge=y|toupper(Judge)=Y)Insert3();else coutInsert Exit!n;void Delete()/删除查找到的 p 节点 coutJudge;if(Judge=y|toupper(Judge)=Y)if(p=head&p-
10、next=NULL)/如果是头节点且只有一个节点名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 10 页 -head=NULL;/head为空即可 if(p=head&p-next!=NULL)/如果是头节点且后面有节点 head=p-next;head-prior=NULL;/重新设置头结点为p 的后一节点,使该节点前节点为空 if(p-next!=NULL)/如果不是头结点且后一结点不为空 p-next-prior=p2;/p的后一结点的前节点指向p2(原指向 p)p2-next=p-next;/p2的后一节点指向p 的后一节点(原指向 p)else/如果不是头结点且后一结点
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年2022年链表学生信息管理系统 2022 年链表 学生 信息管理 系统
限制150内