顺序表存储结构及实现——学生信息管理

一、实验目的
(1) 掌握顺序表的概念及实现方式。
(2) 掌握顺序表的存储结构及主要运算:建立、查找、插入、删除等。
二、实验环境
Windows 10,Microsoft Visual C++ 2010 Express
三、实验内容
1、内容描述
定义一个包含学生信息(学号,姓名,成绩)的顺序表,使其具有如下功能:
(1) 逐个输入学生信息,建立信息表;
(2) 显示信息表中所有学生的相关信息;
(3) 根据姓名进行查找,返回此学生的学号和成绩;
(4) 给定一个学生信息,插入到表中指定的位置;
(5) 删除指定位置的学生记录;
(6) 统计表中学生人数。
2、实现代码

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct{char no[10];   //学号char name[20]; //姓名int mark;     //成绩
}student;
typedef  struct{student *elem;  //存储空间的基地址int length;                                                           }sqlist;bool initlist(sqlist &L){int n;printf("输入学生人数:");scanf("%d",&n);L.elem=(student *)malloc(50*sizeof(student));if(L.elem==NULL)return false;L.length=0;printf("输入学生信息,按“学号 姓名 成绩”输入\n");for(int i=0;i<n;i++){printf("输入第%d位学生信息:",i+1);scanf("%s %s %d",&L.elem[i].no,&L.elem[i].name,&L.elem[i].mark);}L.length=n;return true;
}bool displist(sqlist L){if(L.elem==NULL){printf("请建立学生信息表!");return false;}for(int i=0;i<L.length;i++){printf("学号:%s  姓名:%s  成绩:%d\n",L.elem[i].no,L.elem[i].name,L.elem[i].mark);}return true;
}bool deletelist(sqlist &L){if(L.elem==NULL){printf("请建立学生信息表!");return false;}int i;printf("输入删除的位置序号:");scanf("%d",&i);if(i<=0||i>L.length+1){printf("请输入正确的序号!");return false;}for(int j=i;j<L.length;j++){L.elem[j-1]=L.elem[j];}L.length--;return true;
}bool countlist(sqlist L){if(L.elem==NULL){printf("请建立学生信息表!");return false;}printf("学生人数为:%d\n",L.length);return true;
}bool inserlist(sqlist &L){if(L.elem==NULL){printf("请建立学生信息表!");return false;}int i;printf("输入插入的位置序号:");scanf("%d",&i);if(L.length>=50){printf("顺序表已满!");return false;}if(i<=0||i>L.length+1){printf("请输入正确的序号!");return false;}for(int j=L.length-1;j>=i-1;j--){L.elem[j+1]=L.elem[j];}printf("输入插入的学生信息,按“学号 姓名 成绩”输入\n");scanf("%s %s %d",&L.elem[i-1].no,&L.elem[i-1].name,&L.elem[i-1].mark);L.length++;return true;
}bool seeklist(sqlist L){int flag=0;char na[20];if(L.elem==NULL){printf("请建立学生信息表!");return false;}printf("输入查找的姓名:");scanf("%s",na);for(int i=0;i<L.length;i++){if(strcmp(L.elem[i].name,na)==0){flag=1;printf("学号:%s  成绩:%d\n",L.elem[i].no,L.elem[i].mark);}}if(!flag)printf("未找到相关信息!\n");return true;
}void main(){int choose=0;sqlist L;L.elem=NULL;L.length=0;printf("欢迎进入学生信息管理系统!\n""1.建立\n""2.显示\n""3.查找\n""4.插入\n""5.删除\n""6.计数\n""7.退出\n");while (choose!=7){printf("\n选择序号:");scanf("%d",&choose);switch(choose){case 1:if(!initlist(L))printf("建立失败!\n");else printf("建立成功!\n");break;case 2:if(!displist(L))printf("显示失败!\n");else printf("显示成功!\n");break;case 3:if(!seeklist(L))printf("查找失败!\n");else printf("查找成功!\n");break;case 4:if(!inserlist(L))printf("插入失败!\n");else printf("插入成功!\n");break;case 5:if(!deletelist(L))printf("删除失败!\n");else printf("删除成功!\n");break;case 6:if(!countlist(L))printf("计数失败!\n");else printf("计数成功!\n");break;case 7:free(L.elem);break;}}}

四、实验体会
通过本次实验,掌握了定义线性表的顺序存储类型,加深了对顺序存储结构的理解,进一步巩固和理解了顺序表的基本操作,如建立、查找、插入和删除等。同时,也体会到顺序存储结构的缺点:在插入或删除操作时,需要移动大量的元素,且长度相对固定,当表中数据元素个数较多且变化较大时,操作复杂。

《数据结构》实验报告(一)——顺序表存储结构及实现相关推荐

  1. 实现一个顺序表的建立、查找、插入和删除操作【数据结构实验报告】

    文章目录 一.实验目的 二.算法说明 三.算法实现 四.测试效果 一.实验目的 1.熟悉将算法转换为程序代码的过程. 2.了解顺序表的逻辑结构特性,熟练掌握顺序表存储结构的c语言描述方法. 3.熟练掌 ...

  2. C语言数据结构线性表上机实验报告,数据结构实验报告实验一线性表_图文

    数据结构实验报告实验一线性表_图文 更新时间:2017/2/11 1:23:00  浏览量:763  手机版 数据结构实验报告 实验名称: 实验一 线性表 学生姓名: 班 级: 班内序号: 学 号: ...

  3. 一个图的带权邻接表存储结构的应用

    情景:在一个图中,已知经过的一串n节点信息,希望显示经过的路径. 数据组织: 点要素:存放图中的点信息,必含Id字段 线要素:存放编辑好的路径信息,必含"Start"和" ...

  4. 【数据结构】:实现顺序表各种基本运算的算法

    文章目录 目的 内容 二.详细代码 运行结果 目的 领会顺序表存储结构和掌握顺序表中各种基本运算算法设计. 内容 编写一个程序sqlist.cpp,实现顺序表的各种基本运算和整体建表算法(假设顺序表的 ...

  5. 【数据结构】实验项目:顺序表,也就那么回事

    目录 序 嗨,这里是狐狸~~ 简介 顺序表的结构定义: 声明顺序表类型变量: 实验内容: 实验说明 : 实验思路 1. 输入一组整型元素序列(不少于10个),建立顺序表. 2.  在该顺序表中进行顺序 ...

  6. 北京理工大学计算机实验四报告表,北京理工大学数据结构实验报告实验四

    北京理工大学数据结构实验报告实验四 (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 <数据结构与算法设计>实验报告--实 ...

  7. php算法结构,PHP数据结构与算法:顺序表

    一.概念 把线性表的结点按逻辑顺序依次存放在一组地址连续的存储单元里,元素间的顺序关系由它们的存储顺序自然表示. 逻辑顺序与物理顺序一致 元素之间的关系以元素在计算机内的"物理位置相邻&qu ...

  8. 稀疏矩阵的三元组存储方法c语言,数据结构C语言版 稀疏矩阵的三元组顺序表存储表示和实现...

    陈独秀的秘密 数据结构C语言版 稀疏矩阵的三元组顺序表存储表示和实现 P98 编译环境:Dev-C++ 4.9.9.2 日期:2011年2月8日 */ typedef int ElemType; // ...

  9. 桂电七院数据结构实验报告一

    顺序表的基本操作 实验内容与步骤 实现顺序表上的插入.删除等操作.调试程序并对相应的输出作出分析:修改输入数据,预期输出并验证输出的结果.加深对有关算法的理解. 步骤: 第一步:定义顺序表的存储结构. ...

最新文章

  1. java监听mysql_java实时监控mysql数据库变化
  2. QT的QTableWidget类的使用
  3. CSS使用Chrome进行取色
  4. LINUX Find命令使用
  5. 好想学python 怎么猜人物_想自学Python,如何才能坚持下来?
  6. j2ee可以用于前端开发吗_用于J2EE开发的Cloud IDE
  7. c语言通讯录程序线性表,数据结构(C语言)课设1——单位员工通讯录管理系统(线性表应用)...
  8. Oracle使用小结
  9. 数据集:波士顿地区房价预测
  10. 等式约束凸二次规划(拉格朗日乘子法)_python
  11. php导出excel不完整,急:php导出excel时,因数据比较多,经常导出不完整就结束了【php系统数据导出excel表格】...
  12. 信号与系统19(拉普拉斯逆变换)
  13. 计算机病毒入侵方法,预防电脑病毒入侵的方法
  14. python爬千图网高清图片
  15. 关于惠普暗影精灵2 pro用一段时间之后,插上电源充不了电的问题
  16. 领先三星、华为,全球首款可折叠柔性屏手机惊艳上市
  17. .net/C# 实现汉字到拼音转换
  18. Docker中定制镜像的两种方法
  19. 正式进入Hadoop学习 不会再有比我还全面的大数据学习(三) Hadoop生态圈
  20. 服务器装系统提示获取分区失败,u盘装系统时获取硬盘分区失败怎么办

热门文章

  1. 基于matlab数字滤波器设计,毕业设计 基于MATLAB的数字滤波器设计
  2. JSP设置Excel表格换行_Excel表格技巧—如何调整工作表打印页面设置
  3. 隐藏自己的Linux内核模块
  4. win10 vs2015 wxWidgets编译
  5. 学科语文方面的论文怎么选题?
  6. 网站被黑中毒WebShell木马的解决方案
  7. register关键字
  8. C# register
  9. 什么是RTOS系统定义分析
  10. scroll-view的描点跳转