1、数据结构链表实现学生管理实验报告计算机科学与技术系 实 验 报 告专业名称 计算机科学与技术 课程名称 数据结构 项目名称 链表实现学生管理 班 级 学 号 姓 名 同组人员 无 实验日期 一、实验目的与要求:(简述本次实验要求达到的目的,涉及到的相关知识点,实验的具体要求。)(一)实验目的: 应用链表来实现对数据的操作。 (二)实验要求:用链表实现对数据的,增,删,改,查(三)实验环境:VC+6.0.二、实验内容#include #include #include #define Error 0#define OK 1typedef struct node char name10; char
2、 stuno20; float score; struct node *next;LinkList;/*置空表*/LinkList *setnull(LinkList *L) L-next = NULL; return L;/*创建表*/LinkList *createList() LinkList *L, *S, *H; int i = 1; L = (LinkList *) malloc (sizeof (LinkList); L-next = NULL; H = L; while(i name); scanf(%s,(S-stuno); scanf(%f,&(S-score); /sca
3、nf(%s%s%f,(S-name), (S-stuno), &(S-score); /*gets(S-name); gets(S-stuno); scanf(%f,&S-score);*/ S-next = NULL; H-next = S; H = S; i+; return L;/*链表的删除*/LinkList *deleteList(LinkList *L, char stuno) if(L-next = NULL) printf(此链表已经为空n); return Error; while(L-next != NULL) if(strcmp(L-next-stuno, stuno)
4、 = 0) L-next = L-next-next; printf(-); printf(n删除成功n); printf(-); return L; else L = L-next; printf(-); printf(n对不起,没有找到你想要删除的学号,删除失败。n); printf(-n); return L;/*链表的增加*/LinkList *insertList(LinkList *L, char name, char stuno, float score) LinkList *p; while(L-next != NULL) L = L-next; p = (LinkList *
5、) malloc (sizeof(LinkList); strcpy(p -name, name); strcpy(p -stuno, stuno); p-score = score; p-next = NULL; L-next = p; L = p; return L;/*链表的查找*/LinkList *locateList(LinkList *L, char stuno) int i = 1; if(L -next = NULL) printf(此链表为空,没有任何数据n); return L; while(L-next != NULL) if(strcmp(L-next-stuno,
6、stuno) = 0) printf(-); printf(n第 %d 个学生的, i); printf(姓名:%s, 学号: %s, 成绩: %fn, L-next-name, L-next-stuno,L-next-score); printf(-n); return L; L = L-next; i+; printf(-); printf(n没有查到你的学生号。n); printf(-n); return L;/*输出链表*/int printList(LinkList *L) LinkList *p; int i = 1; p = L-next; if(p = NULL) printf
7、(-); printf(n此链表已经为空n); printf(-n); return Error; while(p!=NULL) printf(-); printf(n第 %d 个学生的, i); printf(姓名:%s, 学号: %s, 成绩: %fn, p-name, p-stuno,p-score); printf(-n); p = p-next; i+; return OK;void main() LinkList *L; int n; char name10; char stuno10; float score; printf(t-请选择操作方式-n); printf(t 1:建链
8、表 t 2删除表元素 t 3:输出表 t 4:增加表元素 n); printf(t 5:查找表元素 t 0:退出n 输入操作数:); scanf(%d, &n); while(n) if(n = 1) L = createList(); else if(n = 2) printf(n请输入想要删除的学号:); scanf(%s, stuno); deleteList(L,stuno); else if(n = 3) printList(L); else if(n = 4) printf(请输入学生的姓名, 学号,成绩:); scanf(%s, name); scanf(%s, stuno);
9、scanf(%f, &score); insertList(L,name, stuno, score); if(n = 5) printf(请输入你要查找的学号:); scanf(%s, stuno); locateList(L, stuno); printf(nt-请选择操作方式-n); printf(t 1:建链表 t 2删除表元素 t 3:输出表 t 4:增加表元素 n); printf(t 5:查找表元素 t 0:退出n 输入操作数:); scanf(%d, &n); 三、实验分析与小结(实验过程中的问题分析、产生的原因以及解决方法;实验结果分析;有待优化思路)(1)实验结果截图(2)总结通过链表,分别实现了对数据的增、删、改、查。四、 其它得分(百分制)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1