zoukankan      html  css  js  c++  java
  • 第一章 线性结构顺序存储结构的运用

    哔哩哔哩数据结构讲解地址:https://space.bilibili.com/356198029

    本视频代码视频讲解地址:https://www.bilibili.com/video/av62157869

    代码如下:

    //数据结构 第一章 熟练使用 增删查改
    #include<stdio.h>
    #include<stdlib.h>
    //定义一个学生的结构体
    typedef struct student
    {
        long long stu_id;//学号
        char name[16];//姓名
        int age;//年龄
        char college[32];//学院
        char stu_class[32];//班级
    } stu;
    //定义顺序表
    
    typedef struct table
    {
        int len;   //顺序表存放多少个元素
        int max;   //顺序表最大存多少个元素
        stu *array;  //存放学生信息的数组
    } List;
    //定义全局变量 ()
    List L1,L2;
    stu temp;
    int tempIndex;
    //顺序表的初始化
    void Init(List *L, int Max)//为什么要传指针?
    {
        L->max = Max;
        L->len = 0;
        L->array = (stu*)malloc(sizeof(stu)*Max);
    }
    void Show(List *L)
    {
        printf("---------------------教务信息系统-------------------------\n");
        printf("--  学号      姓名      年龄       学院       班级  ------\n");
        for(int i=0;i<L->len;i++)
            printf("%6lld,%s,%6d,%s,%s\n",
                   L->array[i].stu_id,
                   L->array[i].name,
                   L->array[i].age,
                   L->array[i].college,
                   L->array[i].stu_class);
        printf("---------------------------------------------------------\n");
        printf("\n\n按任意键继续...");
        getchar();
    }
    //顺序表的插入
    void Insert(List *L, int index, stu value)
    {
        printf("------顺序表的插入 -------\n");
        if(L->len+1<=L->max)//小于最大长度才可以插入哦
        {
            for(int i=L->len;i>=index;i--)//定位到要插入的元素的下标哪里
            {
                L->array[i+1] =  L->array[i];//元素一个一个往后挪
            }
            L->array[index] = value;
            L->len++;
        }
    }
    // 顺序表的删除(根据下标进行删除。也可以根据值,根据值自己思考怎么做)
    void Delete(List *L, int index)
    {
        printf("------顺序表的删除 -------\n");
        printf("删除的元素为:%d\n",L->array[index]);
        for(int i=index;i<L->len;i++)//删除只需要从index 一个个往前挪就行了
            L->array[i] = L->array[i+1];
        L->len--;
    }
    //顺序表的查询 (根据下标进行查询)
    stu Find(List *L, int index)
    {
        printf("------顺序表的查询 -------\n");
        if(index < L->len)
            return L->array[index];
        else return L->array[0];//第一个默认为空
    }
    //顺序表的修改 (根据下标进行修改)
    void Alter(List *L, int index, stu value)
    {
    
        if(index < L->len)
            L->array[index] =  value;
    }
    void login()
    {
        printf("\n-------欢迎来到*********大学 学生信息管理系统---------\n");
        printf("-------                                    ---------\n");
        printf("-------  1、显示学生信息                   ---------\n");
        printf("-------                                    ---------\n");
        printf("-------  2、添加学生信息                   ---------\n");
        printf("-------                                    ---------\n");
        printf("-------  3、修改学生信息                   ---------\n");
        printf("-------                                    ---------\n");
        printf("-------  4、查询学生信息                   ---------\n");
        printf("-------                                    ---------\n");
        printf("-------  5、删除学生信息                   ---------\n");
        printf("-------                                    ---------\n");
        printf("-------  0、退出本系统                     ---------\n");
        printf("-------                                    ---------\n");
        printf("----------------------------------------------------\n");
        printf("\n\n请输入你的操作:");
    }
    //输入函数
    void input()
    {
        printf("请输入学号:");
        scanf("%lld",&temp.stu_id);
        printf("请输入姓名:");
        scanf("%s",&temp.name);
        printf("请输入年龄:");
        scanf("%d",&temp.age);
        printf("请输入学院:");
        scanf("%s",&temp.college);
        printf("请输入班级:");
        scanf("%s",&temp.stu_class);
        printf("请输入位置,不能大于%d:",L1.len);
        scanf("%d",&tempIndex);
    }
    int main()
    {
    
        system("COLOR 0A");
        Init(&L1,100);
        int option;
    
        while(1){
            login();
            scanf("%d",&option);
            getchar();
            system("cls");//清除屏幕
            switch(option)
            {
                case 1:
                    Show(&L1);
                    break;
                case 2:
                    printf("------------------顺序表的插入 -------------------------\n");
                    input();
                    if(tempIndex>L1.len)
                    {
                        printf("插入失败");
                        getchar();
                    }
                    else
                        Insert(&L1,tempIndex,temp);
                    break;
                case 3:
                    printf("------------------顺序表的修改 -------------------------\n");
                    input();
                    if(tempIndex>L1.len)
                    {
                        printf("修改失败\n按任意键继续...\n");
    
                    }
                    else
                    {
                        Alter(&L1,tempIndex,temp);
                        printf("插入成功\n按任意键继续...\n");
                    }
                    getchar();
                    break;
                case 4:
                    //自己完成
                    break;
                case 5:
                    //自己完成
                    break;
                case 0:
                    exit(0);
                    break;
                default:
                    printf("输入格式错误!!!\n按任意键继续...\n");
                    getchar();
                    break;
    
            }
            system("cls");//清除屏幕
        }
    
        return 0;
    }
    /*
    顺序表的简单使用
    可以做学生信息管理系统 银行的  通讯录 图书馆 都可以 但是最主要的还是增删查改
    
    作业  完善本程序 然后 加入文件操作 读取和写入本地文件 关于存储结构体数组到本地文件
    可以CSDN
    
    下周我们开始玩链表
    
    */
  • 相关阅读:
    PHP 处理历史数据的伪代码
    PHP 算法之 -- 计算器设计
    PHP
    PHP-设计模式之-中介者模式
    删除更新数据库字段
    MySQL update 链表 (一个表数据当做条件错误时候的转换)
    题解 CF506C Mr. Kitayuta vs. Bamboos
    题解 LOJ2049 「HNOI2016」网络
    题解 CF1349C Orac and Game of Life
    题解 CF1349B Orac and Medians
  • 原文地址:https://www.cnblogs.com/xwxz/p/11867442.html
Copyright © 2011-2022 走看看