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

一、实验目的
(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. 判断二叉树是否是平衡二叉树(dp tree)
  2. 当前线程等待某些线程运行结束再执行的几种方案。CountDownLatch机制简单解读以及简单实现
  3. No output streams registered, so nothing to execute
  4. Android binder 框架和学习资料
  5. Linux日常运维管理技巧(四)文件同步工具-rsync、Linux系统日志、dmesg命令、lastb命令查看登录失败的用户、screen工具虚拟屏幕
  6. 解决ie6中fixed不起作用的问题
  7. 服务器端的JavaScript
  8. C++编程实现进程调度算法(FCFS+RR)
  9. linux yum源配置
  10. python接外包_程序员到底要不要接外包?
  11. Z变换零极点与收敛域的关系
  12. python反爬虫与绕过_python中绕过反爬虫的方法总结
  13. pd调节规律_PD 控制规律的特点是具有超前控制功能。( )
  14. 五层协议之数据链路层
  15. jsp70786体育馆售票门票系统
  16. ASIC设计中的分频时钟
  17. 精致女生必备软件推荐,有了他们变美不是问题!
  18. ef+mysql配置
  19. 【bug】联想小新出现问题,你的PIN不可用。
  20. Python经典实验4-字典和集合的应用

热门文章

  1. 1-9九个数字组成一个九位数 如果从左边起取出1个数字,需要能被1整除,取出两个数字组成的数能被2整除,取出三个数字组成的数能被3整除,依次类推
  2. 【创业说】零经验接手APP运营推广,聊聊这两个月我是怎么熬过来的
  3. 再聊聊Linux IO
  4. Transform.Forward和Vector3.Forward的正确使用方法
  5. android头像设置
  6. Android使用addr2line定位native崩溃堆栈
  7. 南京广义软件:Android lunch分析以及产品分支构建
  8. 嵌入式RTOS的 任务栈 和 系统栈
  9. csdn博客贴代码方式
  10. 谷歌浏览器如何打开新的窗口