今天博主呢来分享一下前周的数据结构作业,是一道用顺序表来实现学生信息管理的作业。大家不要小看这道题,博主在做的时候也是频繁踩坑(也许是博主菜呢,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. 用顺序表实现学生信息管理系统

    用顺序表实现学生信息管理系统 问题描述: 定义一个包含学生信息(学号,姓名,成绩)的顺序表,使其具有如下功能: (1) 根据指定学生个数,逐个输入学生信息: (2) 逐个显示学生表中所有学生的相关信息 ...

  2. 顺序表实现学生管理系统

    定义一个包含学生信息(学号,姓名,成绩)的顺序表和链表,使其具有如下功能: (1) 根据指定学生个数,逐个输入学生信息: (2) 逐个显示学生表中所有学生的相关信息: (3) 根据姓名进行查找,返回此 ...

  3. 【数据结构】顺序表实现超详解(保姆级教程)

    [数据结构] 目录 ​ 前言 顺序表 接口实现 各项功能 接口详解 顺序表初始化 顺序表释放 顺序表展示 顺序表容量检查 顺序表数据尾插 顺序表数据头插 顺序表数据前删 顺序表数据尾删 顺序表数据查找 ...

  4. c语言用顺序表写一个学生管理系统,用顺序表实现学生信息管理系统

    #include #include #include #define MAXSIZE 100 typedef struct{ char no[20]; // 学号 char name[20]; // ...

  5. 约瑟夫环c语言代码顺序存储,顺序表实现约瑟夫环地问题,C语言.doc

    顺序表实现约瑟夫环地问题,C语言 计算机科学与工程学院 PAGE PAGE 2 <算法与数据结构>试验报告 计算机科学与工程学院 <算法与数据结构>试验报告[一] 专业班级 1 ...

  6. 顺序表讲解和顺序表实现增删查改

    前言 顺序表是一种参见的数据结构 特点:类似数组的储存,需要预先开辟空间已备数据插入.(1)同时顺序表也因此会存在和数组同样的问题(例如:越界)(2)同时因为其类似与数组的结构给二分查找这种算法提供了 ...

  7. 数据结构殷人昆电子版百度云资源_数据结构精讲与习题详解(C语言版第2版清华大学计算机系列教材)...

    导语 内容提要 殷人昆编著的<数据结构精讲与习题详解(C语言版第2版清华大学计算机系列教材)>是清华大学出版社出版的<数据结构(C语言版)>(第2版)的配套教材,对" ...

  8. 学生管理系统——C语言版

    文章目录 学生管理系统--C语言版 主函数 录入学生信息 删除学生信息 修改学生信息 查找学生信息 打印学生信息 保存学生信息 读取学生信息 求班级成绩的平均值 学生管理系统--C语言版 主函数 in ...

  9. 数据结构(3)--线性表实现一元多项式加法

    参考书籍:数据结构(C语言版) 严蔚敏 吴伟民编著 清华大学出版社 本文中的代码可从这里下载:https://github.com/qingyujean/data-structure 1.简要说明   ...

  10. 线性表实现多项式相加c语言,用线性表实现多个多项式相加

    今天开始想复习一下数据结构,就从线性表开始吧. 今天是用线性表实现多个多项式相加这个题目,自变量是x. 题目描述如下: 在数学上,一个一元多项式Pn(x)可按降幂写成:Pn(x) = pn x^n + ...

最新文章

  1. Django模型Model的定义
  2. 使用pytorch建立LSTM神经网络训练识别手写数字
  3. ps随机排列_漂亮!自然材料:人工可控微米级胶体粒子“堆积木”——粒子随心所欲的组装排列!...
  4. python遍历字典方法总结
  5. ios 自定义拍照页面_无需解锁也能使用的iOS实用小组件
  6. Python关于Threading暂停恢复解决办法
  7. shared_ptr简介以及常见问题
  8. 1245C. Constanze‘s Machine
  9. Bootstrap 幻灯片效果
  10. python 24位图转 8位_Python爬取PPT模板小工具下载-Python爬取PPT模板小工具免费版下载v1.0...
  11. 支持Android的Qt5预览
  12. 微信小程序背景音乐的调试
  13. LINK : fatal error LNK1168
  14. 响应面法 matlab,怎么用MATLAB编写响应面优化的程序?
  15. Android POPWindow
  16. java学习第123天,p750-761(05/23)干得漂亮
  17. c语言 输入两个正整数m和n,求其最小公倍数。
  18. 课设-基于51单片机+超声波模块的避障小车(源码+原理图+Protel仿真)
  19. 思科交换机接口配置trunk_Cisco交换机Trunk配置命令是什么?
  20. android解压rar方法,安卓手机如何解压rar/zip/7z等压缩包 详细图解教程

热门文章

  1. 前端面试题—css盒子模型
  2. 高效运营新纪元:智能化华为云Astro低代码重塑组装式交付
  3. Simens_NX免安装使用教程(免安装通用视频)
  4. 收藏几个STM32 MAC 以太网配置 的链接
  5. WAS8.5安装和部署
  6. php sdk 支付宝支付接口商户公钥、应用公钥、商户私钥的使用说明-by勤勤学长 2018年4月
  7. go语言学习--pongo2 fasthttp fasthttprouter pgx
  8. mc服务器定时重启linux,MCPC服务端的自动重启命令
  9. 【设计原则】单一职责原则
  10. 评估云集成平台的四个技巧