收藏 分享(赏)

北京理工大学珠海学院实验报告.doc

上传人:精品资料 文档编号:10164169 上传时间:2019-10-15 格式:DOC 页数:28 大小:656.40KB
下载 相关 举报
北京理工大学珠海学院实验报告.doc_第1页
第1页 / 共28页
北京理工大学珠海学院实验报告.doc_第2页
第2页 / 共28页
北京理工大学珠海学院实验报告.doc_第3页
第3页 / 共28页
北京理工大学珠海学院实验报告.doc_第4页
第4页 / 共28页
北京理工大学珠海学院实验报告.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

1、1北京理工大学珠海学院实验报告ZHUHAI CAMPAUS OF BEIJING INSTITUTE OF TECHNOLOGY一、实验内容定义一个包含学生信息(学号,姓名,成绩)的的顺序表和链表,使其具有如下功能:(1) 根据指定学生个数,逐个输入学生信息;(2) 逐个显示学生表中所有学生的相关信息;(3) 根据姓名进行查找,返回此学生的学号和成绩;(4) 根据指定的位置可返回相应的学生信息(学号,姓名,成绩) ; (5) 给定一个学生信息,插入到表中指定的位置; (6) 删除指定位置的学生记录;(7) 统计表中学生个数。二、实验要求:(1) 程序要添加适当的注释,程序的书写要采用缩进格式。

2、(2) 程序要具在一定的健壮性,即当输入数据非法时,程序也能适当地做出反应,如插入删除时指定的位置不对等等。(3) 程序要做到界面友好,在程序运行时用户可以根据相应的提示信息进行操作。(4) 根据实验报告模板详细书写实验报告,在实验报告中给出链表根据姓名进行查找的算法和插入算法的流程图。(5) 上传源程序和实验报告到教师机的相应班级所在文件夹。顺序表的源程序保存为SqList.cpp,链表的源程序保存为 LinkList.cpp,实验报告命名为:实验报告 1.doc。源程序和实验报告压缩为一个文件(如果定义了头文件则一起压缩) ,按以下方式命名:15 数字媒体技术 X 班学号姓名.rar,如

3、15 数字媒体技术 X 班 070814101 薛力.rar。二、程序实现(内容、步骤、程序)2顺序表#include #include #include #includeusing namespace std;#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW -2 typedef int Status;typedef structchar no8;char name10;int price;Student; 3/ Student 为学生信息类型#define ListSizeFirst 10 /

4、L 的初始分配量#define ListSizeAdd 2 / L 的分配增量typedef structStudent *elem;int length;int listsize;SqList;void InitList(SqList if (!L.elem)exit(OVERFLOW);L.length = 0;L.listsize = ListSizeFirst; / 初始化存储容量int ListLength(SqList L) / L 中有多少个数据元素个数return L.length;4Status GetElem(SqList L, int i, Student e = *(L

5、.elem + i - 1); / 将 L 的第 i 个元素的值赋给 ereturn OK;int LocateElem(SqList L, Student e, Status(*namecompare)(Student, Student) / 返回 L 里面第 1 个与 e 满足名字相同的元素的位序。int i = 1; / 比较元素的次序Student *p = L.elem; / 比较元素的地址while (i L.length + 1)return ERROR;if (L.length = L.listsize) / 存储空间满了newbase = (Student*)realloc(

6、L.elem, (L.listsize + ListSizeAdd) * sizeof(Student);L.elem = newbase; / 新地址L.listsize += ListSizeAdd; / 加长度q = L.elem + i - 1; / 插入位置for (p = L.elem + L.length - 1;p = q;-p) / 元素右移*(p + 1) = *p;*q = e; / 插入 e+L.length; / 表长增 1return OK;6Status ListDelete(SqList if (iL.length)return ERROR;p = L.elem

7、 + i - 1; / 被删位置e = *p;q = L.elem + L.length - 1;for (+p;p k;switch (k)case 1:cout n;for (int i = 1;i e.no;cout e.name;cout e.price;ListInsert(L, i, e);9break;case 2:cout e.name;j = LocateElem(L, e, namecompare);if (j)GetElem(L, j, e);cout i;j = GetElem(L, i, e);if (j)GetElem(L, i, e);cout i;cout e.

8、no;cout e.name;cout e.price;ListInsert(L, i, e);break;case 6:cout i;j = GetElem(L, i, e);if (j)ListDelete(L, i, e);cout #include #include #includeusing namespace std;#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW -2 typedef int Status;12typedef structchar no8;char name10;in

9、t price;Student;typedef struct LNodeStudent data;struct LNode *next;LNode, *LinkList;void InitList(LinkList / 产生头结点if (!L) exit(OVERFLOW);L-next = NULL; int ListLength(LinkList L) / 返回数据元素的个数int i = 0; 13LinkList p = L-next;while (p)i+; p = p-next;return i;Status GetElem(LinkList L, int i, Student L

10、inkList p = L-next; while (p if (!p | ji) return ERROR;e = p-data; return OK;int LocateElem(LinkList L, Student e, Status(*compare)(Student, Student) / 给定比较函数,查找指定元素 int i = 0; 14LinkList p = L-next; while (p)i+; if (compare(p-data, e) / 比较得到数据元素return i; p = p-next;return 0; / 元素不存在返回 0Status ListI

11、nsert(LinkList L, int i, Student e) / 插入元素int j = 0; LinkList s, p = L; while (p if (!p | ji - 1) return ERROR; s = (LinkList)malloc(sizeof(LNode); / 生成新结点s-data = e; 15s-next = p-next; p-next = s; return OK; Status ListDelete(LinkList L, int i, Student LinkList q, p = L; while (p-next if (!p-next |

12、 ji - 1) return ERROR; q = p-next; p-next = q-next; e = q-data; free(q); return OK; void ListTraverse(LinkList L, void(*visit)(Student while (p) visit(p-data); / 对结点调用函数 visit()p = p-next; cout k;switch (k)case 1:printf(“请输入学生人数: n“);cin n;for (i = 1;i e.no;printf(“输入学生姓名: n“);18cin e.name;printf(“输

13、入学生成绩: n“);cin e.price;ListInsert(L, i, e);cout e.name;j = LocateElem(L, e, namecompare);if (j)GetElem(L, j, e);printf(“学号 t 姓名t 成绩tn“);print(e);elseprintf(“没有符合条件的元素 n“);cout i;j = GetElem(L, i, e);if (j)GetElem(L, i, e);cout i;cout e.no;cout e.name;cout e.price;ListInsert(L, i, e);cout i;j = GetEl

14、em(L, i, e);if (j)ListDelete(L, i, e);cout “删除成功,删除学生为: n“;cout “学号t 姓名t 成绩tn“;print(e);elsecout “没有该位置,无法删除! n“;cout “n“;break;case 7:len = ListLength(L);cout “表中学生个数为“ len “个“;cout “n“;break;case 0:exit(0);default:printf(“选择错误,重新开始! n“);3、调试与运行21顺序表:2324单链表:252627281四、实验总结:1、学到了如何利用顺序表和单链表建立学生管理程序。2、当插入学生时数据结构算法不对,查阅了课本找到了问题。3、实验中需要特别注意输入学生算法,指针域、前驱结点和后继结点不能弄错,否则后面的功能都无法实现了。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报