数据结构之顺序表实现学生信息管理(C语言版)
今天博主呢来分享一下前周的数据结构作业,是一道用顺序表来实现学生信息管理的作业。大家不要小看这道题,博主在做的时候也是频繁踩坑(也许是博主菜呢,hhh)。今天分享出来主要就是给需要的同学或路过的同学看看。
下面是解题代码(纯手工打的):
#include <stdio.h>
#include<string.h>
#include<stdlib.h>
#include <string>
#define maxsize1 20
typedef char Elemtype;
typedef struct
{
int num;
char name[maxsize1];
char sex[maxsize1];
int score;
}Type;
typedef struct
{
Type data[maxsize1];
int length;
}SqList;
int initlist(SqList*& L)
{
L = (SqList*)malloc(sizeof(SqList));
//L->data = (Type*)malloc(sizeof(Type));
L->length = 0;
return 0;
}
bool insertdata(SqList*& L, Type e, int i)
{
if (L->length == maxsize1)
{
return false;
}
else if (i<1 || i>L->length)
{
return false;
}
else
{
int j;
i--;
for (j = L->length; j > i; j--)
{
L->data[j] = L->data[j - 1];
}
L->data[i] = e;
L->length++;
return true;
}
}
int deletedata(SqList*& L, int n)
{
if (n<1 || n >L->length)
{
return false;
}
int i = 0;
for (i = n + 1; i < L->length ; i++)
{
L->data[i - 1] = L->data[i];
}
L->length--;
printf("成功删掉第%d个元素\n", n);
return true;
}
int getlength(SqList*& L)
{
printf("当前长度为%d\n", L->length);
return 0;
}
void ifempty(SqList*& L)
{
if (L->length == 0)
{
printf("顺序表为空\n");
}
else
{
printf("顺序表不为空\n");
}
}
void finddata(SqList*& L, int n)
{
if (n<0 || n>L->length)
{
printf("输入位置有误\n");
}
else
{
printf("第%d个元素的学号为%d\n", n, L->data[n].num);
printf("第%d个元素的姓名为%3s\n", n, L->data[n].name);
printf("第%d个元素的性别为%3s\n", n, L->data[n].sex);
printf("第%d个元素的成绩为%d\n", n, L->data[n].score);
}
}
void printlist(SqList*& L)
{
if (L->length == 0)
{
printf("该顺序表的长度为空\n");
}
int j;
printf("表中数据为\n");
for (j = 0; j < L->length; j++)
{
printf("第%d个元素的学号为%d\n", j, L->data[j].num);
printf("第%d个元素的姓名为%3s\n", j, L->data[j].name);
printf("第%d个元素的性别为%3s\n", j, L->data[j].sex);
printf("第%d个元素的成绩为%d\n", j, L->data[j].score);
}
}
void locatedata(SqList*& L, int n)
{
int j ;
for (j = 0; j < L->length; j++)
{
if (L->data[j].num == n)
{
printf("位置在%d", j );
}
else
{
break;
}
}
}
void destroylist(SqList*& L)
{
free(L);
printf("释放成功\n");
}
void input(SqList*& L, int n)
{
printf("请输入学号\n");
scanf_s("%d", &L->data[n - 1].num, 250);
printf("请输入姓名\n");
scanf_s("%s", &L->data[n - 1].name, 250);
printf("请输入性别\n");
scanf_s("%s", &L->data[n - 1].sex, 250);
printf("请输入成绩\n");
scanf_s("%d", &L->data[n - 1].score, 250);
L->length++;
}
int main()
{
SqList* L;
printf("欢迎大家来到学生信息管理系统\n");
initlist(L);
printf("请输入初始化数据\n");
/*for (int i = 1; i < 3; i++)
{
input(L, i);
}
for (int j = 0; j < 2; j++)
{
insertdata(L, L->data[j], j+1);
}*/
insertdata(L, L->data[0], 1);
insertdata(L, L->data[1], 2);
input(L, 1);
input(L, 2);
printf("功能如下:\n");
printf("1.打印信息\n");
printf("2.获取当前顺序表长度\n");
printf("3.判断顺序表是否为空\n");
printf("4.找某位同学的信息\n");
printf("5.根据学号找同学位置\n");
printf("6.删除某位同学的信息\n");
printf("7.销毁顺序表\n");
int choice;
while (true)
{
scanf_s("%d", &choice, 250);
switch (choice)
{
case 1:
printlist(L);
break;
case 2:
getlength(L);
break;
case 3:
ifempty(L);
break;
case 4:
int i;
printf("想要找哪位同学的信息\n");
scanf_s("%d", &i, 250);
finddata(L, i);
break;
case 5:
int j;
printf("想要找的同学的学号为\n");
scanf_s("%d", &j, 250);
locatedata(L, j);
break;
case 6:
int k;
printf("想要删除哪位同学的信息\n");
scanf_s("%d", &k, 250);
deletedata(L, k);
break;
case 7:
destroylist(L);
break;
default:
break;
}
}
return 0;
}
程序执行图:(可能有点瑕疵,大家去看看程序的逻辑就会知道)
本贴为博主亲手整理。如有错误,请评论区指出,一起进步。谢谢大家的浏览.
数据结构之顺序表实现学生信息管理(C语言版)相关推荐
- 用顺序表实现学生信息管理系统
用顺序表实现学生信息管理系统 问题描述: 定义一个包含学生信息(学号,姓名,成绩)的顺序表,使其具有如下功能: (1) 根据指定学生个数,逐个输入学生信息: (2) 逐个显示学生表中所有学生的相关信息 ...
- 顺序表实现学生管理系统
定义一个包含学生信息(学号,姓名,成绩)的顺序表和链表,使其具有如下功能: (1) 根据指定学生个数,逐个输入学生信息: (2) 逐个显示学生表中所有学生的相关信息: (3) 根据姓名进行查找,返回此 ...
- 【数据结构】顺序表实现超详解(保姆级教程)
[数据结构] 目录 前言 顺序表 接口实现 各项功能 接口详解 顺序表初始化 顺序表释放 顺序表展示 顺序表容量检查 顺序表数据尾插 顺序表数据头插 顺序表数据前删 顺序表数据尾删 顺序表数据查找 ...
- c语言用顺序表写一个学生管理系统,用顺序表实现学生信息管理系统
#include #include #include #define MAXSIZE 100 typedef struct{ char no[20]; // 学号 char name[20]; // ...
- 约瑟夫环c语言代码顺序存储,顺序表实现约瑟夫环地问题,C语言.doc
顺序表实现约瑟夫环地问题,C语言 计算机科学与工程学院 PAGE PAGE 2 <算法与数据结构>试验报告 计算机科学与工程学院 <算法与数据结构>试验报告[一] 专业班级 1 ...
- 顺序表讲解和顺序表实现增删查改
前言 顺序表是一种参见的数据结构 特点:类似数组的储存,需要预先开辟空间已备数据插入.(1)同时顺序表也因此会存在和数组同样的问题(例如:越界)(2)同时因为其类似与数组的结构给二分查找这种算法提供了 ...
- 数据结构殷人昆电子版百度云资源_数据结构精讲与习题详解(C语言版第2版清华大学计算机系列教材)...
导语 内容提要 殷人昆编著的<数据结构精讲与习题详解(C语言版第2版清华大学计算机系列教材)>是清华大学出版社出版的<数据结构(C语言版)>(第2版)的配套教材,对" ...
- 学生管理系统——C语言版
文章目录 学生管理系统--C语言版 主函数 录入学生信息 删除学生信息 修改学生信息 查找学生信息 打印学生信息 保存学生信息 读取学生信息 求班级成绩的平均值 学生管理系统--C语言版 主函数 in ...
- 数据结构(3)--线性表实现一元多项式加法
参考书籍:数据结构(C语言版) 严蔚敏 吴伟民编著 清华大学出版社 本文中的代码可从这里下载:https://github.com/qingyujean/data-structure 1.简要说明 ...
- 线性表实现多项式相加c语言,用线性表实现多个多项式相加
今天开始想复习一下数据结构,就从线性表开始吧. 今天是用线性表实现多个多项式相加这个题目,自变量是x. 题目描述如下: 在数学上,一个一元多项式Pn(x)可按降幂写成:Pn(x) = pn x^n + ...
最新文章
- Django模型Model的定义
- 使用pytorch建立LSTM神经网络训练识别手写数字
- ps随机排列_漂亮!自然材料:人工可控微米级胶体粒子“堆积木”——粒子随心所欲的组装排列!...
- python遍历字典方法总结
- ios 自定义拍照页面_无需解锁也能使用的iOS实用小组件
- Python关于Threading暂停恢复解决办法
- shared_ptr简介以及常见问题
- 1245C. Constanze‘s Machine
- Bootstrap 幻灯片效果
- python 24位图转 8位_Python爬取PPT模板小工具下载-Python爬取PPT模板小工具免费版下载v1.0...
- 支持Android的Qt5预览
- 微信小程序背景音乐的调试
- LINK : fatal error LNK1168
- 响应面法 matlab,怎么用MATLAB编写响应面优化的程序?
- Android POPWindow
- java学习第123天,p750-761(05/23)干得漂亮
- c语言 输入两个正整数m和n,求其最小公倍数。
- 课设-基于51单片机+超声波模块的避障小车(源码+原理图+Protel仿真)
- 思科交换机接口配置trunk_Cisco交换机Trunk配置命令是什么?
- android解压rar方法,安卓手机如何解压rar/zip/7z等压缩包 详细图解教程