ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:125.08KB ,
资源ID:6843122      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6843122.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(福师大计算机系数据结构实验二.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

福师大计算机系数据结构实验二.docx

1、福师大计算机系数据结构实验二实验报告(二):线性表科目:数据结构与算法实验1 专业: 计算机科学与技术 班级: 计本 班 姓名: 学号: 日期: 2012-10-11 1 实验目的1) 掌握程序设计的基本方法,要求能够利用C/C+语言实现简单的算法设计。2) 熟悉掌握线性表的基本运算在顺序存储结构和链式存储结构上的实现。3) 掌握顺序表以及链表基本操作及其代码实现。4) 能使用线性表来解决实际中遇到的问题。5) 理解数据结构与数据结构应用之间的关系。2 实验内容1) 设计和实现线性表的数据结构、操作,并加以实现。2) 利用(1)中实现的线性表存储学生及成绩信息。3) 利用线性表的基本操作,实现

2、学生成绩的插入、保存、查找、删除等操作。4) 利用文件实现学生信息的保存、读取。3 实验要求1) 提前预习该实验相关的内容,包括线性表的定义、线性表的两种实现方法、线性表操作的实现。2) 选择一种线性表的存储结构(顺序存储、链式存储结构),实现该结构及操作。3) 利用实现的线性表存储学生学号及成绩信息列表,并利用线性表的基本操作实现对学生成绩的各类操作。4) 编写完整的程序,并上机调试和运行。5) 整理并上交实验报告。6) 本次实验要求在4学时内完成。4 数据结构设计4.1 链表结构设计 (采取单链表的结构)类图的设计: 4.2 基本操作所要实现的基本操作:1) 学生信息的保存、读取。2) 学

3、生成绩的插入、保存、查找、删除等。5 实现5.1 设计实现/以头文件public.h声明程序参数#pragma once#pragma region 声明#include#include#include#include using namespace std;#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int Status;#pragma endregion/以头文件LinkList.h定义链表结构#pragma once#incl

4、ude public.h#pragma region 定义#pragma region 数据节点的定义template struct LinkNode ELEMENT_TYPE data; struct LinkNode *next;#pragma endregion#pragma region 线性表头结点的定义template struct LinkList LinkNode* head; int length;#pragma endregion#pragma endregion/以头文件DefinitionForStudent.h定义学生结点结构#pragma once#include

5、./LinkList/LinkList.h#pragma region 定义#pragma region 学生结构体定义 typedef struct StudentNode_type long no; /学号 char name21; /姓名 char sex; /性别;0表示女生;1 表示男生; char Dormitory9;/宿舍 long phone; /联系方式 long QQ; /QQ float score; /成绩StudentNode;#pragma endregiontypedef LinkNode s2;typedef LinkList student;char Fil

6、eName = stu.dat;#pragma endregion5.2 操作实现5.2.1 线性链表的操作/LinkList.h#pragma once#include public.h#pragma region 操作#pragma region 插入template Status ListInsert( LinkList & L,int i,ELEMENT_TYPE e) if ( i L.length + 1 | i 0 ) return FALSE; LinkNode* p; p = new LinkNode; if ( p = NULL ) return FALSE; p-next

7、 = NULL; p-data = e; if ( i = 1 ) p-next = L.head; L.head = p; else LinkNode* q = L.head; for ( int k = 1;k next; p-next = q-next; q-next = p; L.length+; return OK; /ListInserttemplate Status InsertFirst( LinkList &L,ELEMENT_TYPE e) return ListInsert(L,1,e);/InsFirsttemplate Status InsertLast( LinkL

8、ist &L,ELEMENT_TYPE e) return ListInsert(L,L.length+1,e);/InsertLast#pragma endregion#pragma region 删除template Status ListDelete(LinkList &L,int i,ELEMENT_TYPE &e) if ( i L.length ) return ERROR; if ( i = 1 ) LinkNode* p; p = L.head; L.head = p-next; e = p-data; else LinkNode* p = L.head; for ( int

9、k = 0;k next; LinkNode* q = p-next; p-next = q-next; delete q; return OK;/ListDelete#pragma endregion#pragma region 查找与待处理元素相等的节点位置,不存在返回0template Status LocateElem(LinkList &L,ELEMENT_TYPE e,bool (*compare(ELEMENT_TYPE,ELEMENT_TYPE) LinkNode* p = L.head; int k = 1; while( p != NULL) if (*compare)(p

10、-data,e) return k; else k+; p = p-next; return 0; #pragma endregion#pragma region 查找templateStatus GetElem(LinkList &L,int i,ELEMENT_TYPE &e) if ( i L.length ) return ERROR; LinkNode* p = L.head; for (int k = 1;k next; e = p-data; return OK;#pragma endregion#pragma region 修改templateStatus ListModify

11、(LinkList &L,int i,ELEMENT_TYPE e1,ELEMENT_TYPE e2) ListDelete(L,i,e1); ListInsert(L,i,e2); return OK;#pragma endregion#pragma region 线性表的初始化操作template Status InitList( LinkList & L ) L.head = NULL; L.length = 0; return OK;/InitList#pragma endregion#pragma region 线性表的释放、清空 template Status ClearList(

12、LinkList &L) LinkNode* p = L.head; while ( p != NULL) L.head = p-next; delete p; p = L.head; return OK;/ClearList #pragma endregion #pragma region 获取长度templateStatus ListLength(LinkList &L) return L.length;#pragma endregion#pragma endregion5.2.2 学生结点的操作/DefinitionForStudent.h #pragma once#include ./

13、LinkList/LinkList.htypedef LinkNode s2;typedef LinkList student;char FileName = stu.dat;#pragma endregion#pragma region 操作#pragma region 输入学生Status InputStudent( student stu,StudentNode & s ) cins.nos.names.sexs.Dormitorys.phones.QQs.score; InsertFirst(stu,s); return OK;#pragma endregion#pragma regi

14、on 把学生保存到文件Status SaveToFile( LinkList & L) StudentNode s; FILE *file; fopen_s(&file,FileName,w); if (file = NULL) coutCant open file.endl; return ERROR; fwrite(&L.length,sizeof(int),1,file); for ( int k = 0;k L.length;k+ ) GetElem( L,k+1,s); if(fwrite(&s,sizeof(struct StudentNode_type),1,file) != 1

15、) coutFile write error!endl; fclose(file); fclose(file); return OK;#pragma endregion#pragma region 从文件中读取学生Status ReadFromFile( LinkList & L) StudentNode s; FILE *file; fopen_s(&file,FileName,r); if (file = NULL) coutCannot open file.endl; return ERROR; int length; fread(&length,sizeof(int),1,file);

16、 for ( int k = 0;k length;k+ ) if(fread(&s,sizeof(struct StudentNode_type),1,file) != 1) if ( feof(file) ) fclose(file); return OK; coutFile read error!endl; return ERROR; ListInsert( L,k+1,s ); fclose(file); return OK;#pragma endregion#pragma region 获取某一学生信息Status GetStudent( LinkList & L,int k,Stu

17、dentNode &s) GetElem( L,k,s); return OK;#pragma endregion#pragma region 显示学生信息Status display(LinkList & L,StudentNode &s) int k; cink; if ( GetStudent(L,k,s) = ERROR ) cout学生人数应大于 0 小于 ListLength(L) 。endlendl; return ERROR; cout学号:s.no ;姓名:s.name ;性别:s.sex ;宿舍:s.Dormitory ;联系方式:s.phone ;QQ:s.QQ ;成绩:

18、s.scoreendl; return OK;#pragma endregion#pragma region 学生的初始化操作Status CreateStudent( student & s) InitList(s); return OK;/CreateStudent#pragma endregion#pragma region 判断是否为同一学生bool compare(const StudentNode & s1,const StudentNode & s2) return (s1.no = s2.no)&(strcmp(s1.name,s2.name) ? TRUE:FALSE;/co

19、mpare#pragma endregion#pragma region 删除某一学生信息Status DeleteStudent( LinkList & L,StudentNode &s) int k; cink; if ( ListDelete( L,k,s) = ERROR ) cout学生人数应大于 0 且小于等于 ListLength(L) 。endlendl; return ERROR; return OK;#pragma endregion#pragma region 清除所有Status ClearAll( LinkList & L) ClearList(L); return

20、OK;#pragma endregion5.2.3 程序实现的操作/以头文件design.h定义程序实现操作#pragma once#include DefinitionForStudent.hStatus Title() cout实验报告二学生信息管理线性链表实现 版本1.0.1.1endl 版权所有 (c) 2012 Corporation。保留所有权利。endlendl; return OK;Status HelpMenu() cout有关某个命令的详细信息,请键入 help 命令名endl input 输入学生的信息endl get 获取一个学生信息endl print 打印学生信息e

21、ndl save 保存到文件endl read 从文件读取endl delete 删除一个学生endl clear 删除所有endl exit 退出endlendl 有关命令的详细信息,请参阅帮助文档。endlendl; return OK;Status HelpInput() cout输入学生的信息。endlendl input no name sex Dormitory phone QQ scoreendlendl no 学号(long int 型)。endl name 姓名(char21 型)。endl sex 性别(char 型,0表示女生;1 表示男生)。endl Dormitory

22、 宿舍(char9 型)。endl phone 联系电话(long int 型)。endl QQ QQ号(long int 型)。endl score 分数成绩(float 型)。endlendl 输入参数之间请用空格或换行隔开.endl Please input separated with blank space .endlendl; return OK;Status HelpGet() return OK;Status HelpPrint() return OK;Status HelpSave() return OK;Status HelpRead() return OK;Status

23、HelpDelete() cout删除一个学生。endlendl delete kendlendl k 学生链表中第 k 位置的学生。endl 输入参数之间请用换行隔开.endl Please input separated with Newline .endlendl; return OK;Status HelpExit() cout退出 TextForLinkListOfStudent.exe 程序(命令解释器)。endlendl; return OK;Status change(char command) if (strcmp(command,input)=0) return 11; e

24、lse if (strcmp(command,help input)=0|strcmp(command,input /?)=0) return 111; else if (strcmp(command,get)=0) return 12; else if (strcmp(command,help get)=0|strcmp(command,get /?)=0) return 121; else if (strcmp(command,print)=0) return 13; else if (strcmp(command,help print)=0|strcmp(command,print /?

25、)=0) return 131; else if (strcmp(command,save)=0) return 14; else if (strcmp(command,help save)=0|strcmp(command,save /?)=0) return 141; else if (strcmp(command,read)=0) return 15; else if (strcmp(command,help read)=0|strcmp(command,read /?)=0) return 151; else if (strcmp(command,delete)=0) return 16; else if (

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1