收藏 分销(赏)

数据结构实验一-实验报告.doc

上传人:天**** 文档编号:4347564 上传时间:2024-09-09 格式:DOC 页数:13 大小:83.50KB
下载 相关 举报
数据结构实验一-实验报告.doc_第1页
第1页 / 共13页
数据结构实验一-实验报告.doc_第2页
第2页 / 共13页
点击查看更多>>
资源描述
班级:     姓名:             学号:        实验一 线性表得基本操作 一、 实验目得 1、掌握线性表得定义; 2、掌握线性表得基本操作,如建立、查找、插入与删除等。 二、 实验内容 定义一个包含学生信息(学号,姓名,成绩)得顺序表与链表(二选一),使其具有如下功能: (1) 根据指定学生个数,逐个输入学生信息; (2) 逐个显示学生表中所有学生得相关信息; (3) 根据姓名进行查找,返回此学生得学号与成绩; (4) 根据指定得位置可返回相应得学生信息(学号,姓名,成绩); (5) 给定一个学生信息,插入到表中指定得位置; (6) 删除指定位置得学生记录; (7) 统计表中学生个数. 三、 实验环境 Visual C++ 四、 程序分析与实验结果 #include<stdio、h〉 #include<malloc、h〉 #include<stdlib、h〉 #include〈string、h> #define OK 1 #define ERROR 0 #define OVERFLOW —2 typedef int Status; // 定义函数返回值类型 typedef struct { char num[10]; // 学号 ﻩchar name[20]; // 姓名 double grade; // 成绩 }student; typedef student ElemType; typedef struct LNode { ﻩElemType data; // 数据域 struct LNode *next; //指针域  }LNode,*LinkList; Status InitList(LinkList &L) // 构造空链表 L { ﻩL=(struct LNode*)malloc(sizeof(struct LNode)); L-〉next=NULL; ﻩreturn OK; } Status GetElem(LinkList L,int i,ElemType &e) // 访问链表,找到 i位置得数据域,返回给 e { ﻩLinkList p; p=L—〉next; int j=1; while(p&&j<i) ﻩ{ ﻩﻩp=p—>next; ++j; } if(!p||j〉i) return ERROR; ﻩe=p—〉data; ﻩreturn OK; } Status Search(LNode L,char str[],LinkList &p) // 根据名字查找 { p=L、next; ﻩwhile(p) ﻩ{ ﻩﻩif(strcmp(p—>data、name,str)==0) ﻩﻩreturn OK; ﻩp=p-〉next; } ﻩreturn ERROR; } Status ListInsert(LinkList L,int i,ElemType e) // 在 i个位置插入某个学生得信息  { LinkList p,s; p=L; ﻩint j=0; while(p&&j〈i-1) ﻩ{ ﻩﻩp=p-〉next; ++j; ﻩ} ﻩif(!p||j>i-1)ﻩreturn ERROR; ﻩs=(struct LNode*)malloc(sizeof(LNode)); ﻩs-〉data=e; ﻩs->next=p-〉next; ﻩp—>next=s; ﻩreturn OK; } Status ListDelete(LinkList p,int i) // 删除 i位置得学生信息 { int j=0; while((p—>next)&&(j<i-1)) ﻩ{ ﻩp=p—〉next; ﻩ ++j; } if(!(p—〉next)||(j>i—1))ﻩreturn ERROR; LinkList q; ﻩq=p—>next; p-〉next=q—>next; ﻩdelete q; return OK; } void Input(ElemType *e) { ﻩprintf(”姓名:");ﻩscanf("%s”,e-〉name); ﻩprintf(”学号:”); scanf("%s”,e—>num); ﻩprintf(”成绩:"); scanf("%lf",&e-〉grade); printf(”输入完成\n\n”); } void Output(ElemType *e) { printf("姓名:%-20s\n学号:%—10s\n成绩:%-10、2lf\n\n",e->name,e—>num,e->grade); } int main() { LNode L; ﻩLinkList p; ﻩElemType a,b,c,d; ﻩprintf("\n********************************\n\n"); ﻩputs("1、 构造链表"); ﻩputs("2、 录入学生信息”); ﻩputs("3、 显示学生信息"); ﻩputs("4、 输入姓名,查找该学生"); ﻩputs(”5、 显示某位置该学生信息"); ﻩputs("6、 在指定位置插入学生信息”); ﻩputs("7、 在指定位置删除学生信息”); puts("8、 统计学生个数"); puts("0、 退出"); printf("\n********************************\n\n"); int x,choose=-1; while(choose!=0) { puts("请选择:"); ﻩscanf("%d",&choose); ﻩswitch(choose) ﻩ{ ﻩﻩcase 1: ﻩ ﻩif(InitList(p)) ﻩ ﻩﻩﻩ printf("成功建立链表\n\n”); ﻩﻩ else ﻩ printf(”链表建立失败\n\n"); ﻩﻩ ﻩﻩbreak; ﻩﻩ case 2: ﻩ ﻩprintf(”请输入要录入学生信息得人数:"); ﻩ ﻩ ﻩscanf(”%d”,&x); ﻩﻩ for(int i=1;i〈=x;i++) ﻩﻩﻩﻩ { ﻩ ﻩ printf("第%d个学生:\n”,i); ﻩﻩ ﻩﻩﻩInput(&a); ﻩﻩﻩ ﻩ ListInsert(&L,i,a); ﻩ ﻩ } ﻩ ﻩbreak; ﻩ ﻩcase 3: ﻩ ﻩ for(int i=1;i<=x;i++) ﻩﻩﻩ ﻩ{ ﻩ GetElem(&L,i,b); ﻩﻩﻩ ﻩOutput(&b); ﻩ } ﻩ ﻩﻩbreak; ﻩ case 4: ﻩﻩ char s[20]; ﻩ ﻩ printf(”请输入要查找得学生姓名:"); ﻩﻩ scanf("%s",s); ﻩﻩﻩ if(Search(L,s,p)) ﻩﻩﻩﻩ ﻩOutput(&(p—>data)); ﻩﻩﻩ else ﻩ ﻩ puts("对不起,查无此人”); ﻩputs("”); ﻩ ﻩbreak; ﻩﻩ case 5: ﻩ ﻩprintf("请输入要查询得位置:"); ﻩ ﻩﻩint id1; ﻩ scanf("%d",&id1); ﻩﻩﻩGetElem(&L,id1,c); ﻩﻩ ﻩﻩOutput(&c); ﻩ ﻩ ﻩbreak; ﻩ ﻩcase 6: ﻩﻩ printf ("请输入要插入得位置:"); ﻩﻩ int id2; ﻩﻩﻩscanf("%d",&id2); ﻩﻩ printf("请输入学生信息:\n"); ﻩﻩ ﻩInput(&d); ﻩ ﻩif(ListInsert(&L,id2,d)) ﻩﻩﻩﻩ { ﻩﻩ x++; ﻩ ﻩ ﻩﻩputs("插入成功”); ﻩ ﻩﻩﻩputs("”); ﻩﻩ ﻩ } ﻩﻩﻩﻩﻩelse ﻩﻩ ﻩ { ﻩ puts("插入失败”); ﻩﻩ puts(””); ﻩﻩ ﻩ } ﻩ break; ﻩ case 7: ﻩ ﻩprintf("请输入要删除得位置:"); ﻩﻩ ﻩint id3; ﻩﻩﻩﻩscanf("%d”,&id3); ﻩﻩﻩﻩ if(ListDelete(&L,id3)) ﻩ ﻩ { ﻩﻩx—-; ﻩﻩ ﻩﻩ puts("删除成功"); ﻩ ﻩﻩﻩputs("”); ﻩﻩ ﻩﻩ} ﻩﻩ ﻩﻩelse ﻩ ﻩ{ ﻩﻩ ﻩ puts(”删除失败"); ﻩﻩﻩ ﻩputs("");ﻩ ﻩ ﻩﻩﻩ} ﻩ break; ﻩ case 8: ﻩprintf(”已录入得学生个数为:%d\n\n”,x); ﻩ ﻩﻩbreak; } } ﻩprintf("\n\n谢谢您得使用,请按任意键退出\n\n\n"); system(”pause"); ﻩreturn 0; } 用户界面: (1) 根据指定学生个数,逐个输入学生信息: (2) 逐个显示学生表中所有学生得相关信息: (3) 根据姓名进行查找,返回此学生得学号与成绩: (4) 根据指定得位置可返回相应得学生信息(学号,姓名,成绩): (5) 给定一个学生信息,插入到表中指定得位置: (6) 删除指定位置得学生记录: (7) 统计表中学生个数: 五、 实验总结 数据结构就是一门专业技术基础课。它要求学会分析研究计算机加工得数据结构得特性,以便为应用涉及得数据选择适当得逻辑结构,存储结构及相应得算法,并初步掌握算法得时间分析与空间分析技术。不仅要考虑具体实现哪些功能,同时还要考虑如何布局,这次得实验题目就是根据我们得课本学习进程出得,说实话,我并没有真正得读懂书本得知识,所以刚开始得时候,感到很棘手,于就是又重新细读课本,这一方面又加强了对书本得理解,在这上面花费了一些心血,觉得它并不简单,就是需要花大量时间来编写得。。在本次实验中,在程序构思及设计方面有了较大得锻炼,能力得到了一定得提高。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服